[VBA] Comment éviter l'affichage "activer les macros" quand on ouvre un fichier Excel ?

Anonyme
2010-08-02T20:47:33+00:00

bonjour à toutes et à tous,

Je voudrais savoir comment, en vba, éviter l'affichage de la boite de dialogue contenant l'option "Activer les macros" quand on demande l'ouverture d'un fichier excel, sans changer le niveau de sécurité (moyen pour ce qui me concerne).

Parallèlement, je voudrais savoir comment changer le niveau de sécurité en vba.

Je vous remercie toutes et tous pour vos réponses.


Demokos

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2010-08-05T17:37:47+00:00

Alors là, je me tiens coi.

Je ne dirai que deux mots : BRA VO !!!

Excellent !

Pour mon éducation je vais comparer ce code avec le précédent pour tenter de comprendre ce qui ne fonctionnait pas dans le précédent sous Word, mais en tous cas ce code-ci fonctionne parfaitement.

Merci infiment, MichD.

Il ne me reste plus maintenant qu'à faire la suite du code de mon application. Ce sera pour ce week end.

Merci encore.

'--------------------------------------------

Sub Modifier_Niveau_Security_Excel_From_Word()

Dim objXl As Object, wsh As Object

On Error Resume Next

Set objXl = GetObject(, "Excel.Application")

If Not objXl Is Nothing Then

    MsgBox "Pour la suite des opérations, Excel doit être fermé." & _

    vbCrLf & "Opération annulée.", vbCritical + vbOKOnly, "Attention"

    Exit Sub

End If

If Err <> 0 Then

    Err = 0

    Set objXl = CreateObject("Excel.Application")

End If

Version = objXl.Version

objXl.Quit

Set wsh = CreateObject("WScript.Shell")

'Set wsh = WScript.CreateObject("WScript.Shell")

Cle2003 = "HKCU\Software\Microsoft\Office" & Version & "\Excel\Security\Level"

wsh.RegWrite Cle2003, 3, "REG_DWORD"

End Sub

'--------------------------------------------


MichD


Demokos

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

24 réponses supplémentaires

  1. Anonyme
    2010-08-03T07:51:11+00:00

    Bonjour JC Duce

    C'est vrai.

    Alors peut-être qu'avec un fichier VBS, je peux

    1. Sauvegarder le niveau de sécurité actuel

    Je suppose que je peux le récupérer en faisant quelque chose comme :

    Cle2003 = "HKCU\Software\Microsoft\Office" & Version & "\Excel\Security\Level"

    Cle = wsh.RegRead Cle2003

    ????

    1. S'il est supérieur à 1, le changer pour lui donner cette valeur, sinon ne rien faire de plus
    2. ouvrir le fichier Excel (je verrai comment je peux faire)
    3. changer à nouveau le niveau de sécurité pour le niveau d'origine

    A ce moment-là, le niveau de sécurité ne sera réellement modifié que lorsque, après que le fichier Excel ait été fermé, un autre sera ouvert.

    Cela pourrait-il fonctionner ainsi ?


    Demokos

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2010-08-03T06:44:50+00:00

    Bonjour,

    A mon avis, on ne doit pas pouvoir faire ce que tu désires avec Excel ouvert : en effet, s'agissant d'une clé de registre, celle-ci est sans doute lue une fois pour toute au chargement de l'application.

    Ainsi, si le premier fichier est chargé avec un niveau de sécurité à 1, les suivants le seront également, jusqu'a la fermeture d'Excel et la remise à jour de la clé via le script spécifié.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2010-08-03T06:29:05+00:00

    Merci, MichD

    Toutes ces informations sont très utiles. J'ai essayé et ça fonctionne impéccable.

    Juste une petite question complémentaire :

    Comment peut-on appeler ce(s) script(s) vbs à partir d'Excel ?

    Ce serait LA solution : j'appelle la version avec le niveau de sécurité 1, je charge le fichier dans Excel puis je restitue le niveau de sécurité 2 (voire 3)

    Merci d'avance.


    Demokos

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2010-08-02T23:53:16+00:00

    Bonjour,

    Tu peux lire ceci :

    http://support.microsoft.com/kb/926530

    Pour modifier le niveau de sécurité dans Excel,

    Il n'existe pas une façon de faire en VBA.

    Par l'interface graphique de la feuille de calcul,

    Barre de menu / outils / Macro / Sécurité / et tu coches le dernier bouton radio.

    Tu assumes les risques associés à ce niveau de sécurité.

    Aucun message ne te sera fait lors de l'ouverture de fichiers avec macro.

    Il existe une façon d'automatiser la chose, en créant un petit script.

    Tu ouvres "NotePad", tu copies le code ci-dessous et tu t'assures

    d'enregistrer ton fichier en donnant expressément l'extension .VBS

    Si tu double-cliques sur le fichier, ce dernier va s'exécuter.

    Voici le code à mettre dans ce fichier :

    Dans la dernière ligne de code, tu modifies le 1 pour le niveau désiré

    niveau de sécurité le + élevé = 4

    niveau de sécurité le plus faible = 1

    Pour ce faire, Excel doit être fermé, si l'application est ouverte, tu recevras

    un message dans ce sens.

    Tu peux sauvegarder ce fichier sur le bureau, tu peux en avoir plus d'un

    selon le niveau de sécurité désiré avant d'ouvrir l'application Excel

    '-------------------------------

    Dim Version

    Dim objXl, wsh

    'Excel Must be closed

    On Error Resume Next

    Set wsh = WScript.CreateObject("WScript.Shell")

    Set objXl=GetObject(,"Excel.Application")

    If Not IsEmpty(objXl) Then

      Err.clear

      Msgbox "Excel doit être fermé.."

      wsh.quit

      Set wsh = Nothing

    else

       Set objXl=CreateObject("Excel.Application")

       Version = objxl.Version

      objXl.quitEnd If

    'Set wsh = WScript.CreateObject("WScript.Shell")

    Cle2003 = "HKCU\Software\Microsoft\Office" & Version & "\Excel\Security\Level"

    wsh.RegWrite Cle2003,3,"REG_DWORD"

    '-------------------------------

    MichD


    "demokos" a écrit dans le message de groupe de discussion :

    *** Adresse électronique supprimée pour cause de confidentialité ***...

    bonjour à toutes et à tous,

    Je voudrais savoir comment, en vba, éviter l'affichage de la boite de dialogue contenant l'option "Activer les macros"

    quand on demande l'ouverture d'un fichier excel, sans changer le niveau de sécurité (moyen pour ce qui me concerne).

    Parallèlement, je voudrais savoir comment changer le niveau de sécurité en vba.

    Je vous remercie toutes et tous pour vos réponses.


    Demokos

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire