Sécurité VBA
Sécurité VBA
Vérouiller le projet
Pour empêcher d'ouvir le projet (mais pas l'éditeur VBA)
Dans l'éditeur VBA (ALT + F11)
Menu Outils > Propriété de VBAproject, onglet Protection :
Cocher l'option "Vérrouiller le projet pour l'affichage" et donnez un mot de passe.
Enregistrer et fermer Excel.
Protection du classeur
Pour protéger un classeur, passez la commande :
Révision / Protéger le classeur et activez l'option Protéger la structures et les fenêtres. Excel vous demande de choisir les éléments à protéger :
Structure : Empêchera l'ajout, la suppression, le déplacement des feuilles dans le classeur.
Fenêtre : Empêchera le redimensionnement, la fermeture, la mise en icône, le fractionnement des fenêtres.
Pour ôter la protection faites Révision / Protéger le classeur et désactivez l'option Protéger la structures et les fenêtres. (il vous faudra évidement saisir votre mot de passe)
Protection de la feuille
Pour protéger la feuille de calcul manuellement, vous devez au préalable avoir ôté la propriété verrouillée à toutes les cellules auxquelles vous souhaitez donner l'accès à l'aide de la commande Accueil / Police / Protection. Ensuite passez la commande Révision / Protéger la feuille.
Voici un exemple de protection d'une plage via VBA en 6 étapes (pour Mélanie) :
'1 - Sélection d'une feuille
Sheets("Feuil1").Select
'2 - Sélection de toutes les cellules
Cells.Select
'3 - Libère le vérouillage de toutes les cellules
Selection.Locked = False
'4 - Sélection d'une plage précise (ici les colonnes A à C)
Range("A:C").Select
'5 - Activation du vérouillage
Selection.Locked = True
'6 - Protection de la feuille (avec mot de passe titi)
Sheets("Feuil1").Protect Password:="titi", DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Feuil1").Select
'2 - Sélection de toutes les cellules
Cells.Select
'3 - Libère le vérouillage de toutes les cellules
Selection.Locked = False
'4 - Sélection d'une plage précise (ici les colonnes A à C)
Range("A:C").Select
'5 - Activation du vérouillage
Selection.Locked = True
'6 - Protection de la feuille (avec mot de passe titi)
Sheets("Feuil1").Protect Password:="titi", DrawingObjects:=True, Contents:=True, Scenarios:=True
Certificat numérique pour VBA
Sous le niveau de sécurité moyen ou élevé d'Excel (Outils/Macro/Sécurité ou Onglet "Développeur" à partir de 2007), afin d'éviter à avoir la fenêtre d'interrogation provoquée par le chargement d'un document qui contient des macros, vous pouvez utiliser le certificat numérique conçu pour cette fin. En effet, pour un usage privé, Microsoft Office vous fournit un outil nommé "Certificat numérique pour les projets VBA".
Notez que les certificats créés par cet outils sont privés : il ne sera reconnu comme certificat valable que dans l'ordinateur où il était fabriqué. Il se trouve dans le menu Windows Démarrer > Tous les programmes > Microsoft Office > Outils Microsoft Office.
Pour signer un document Office avec un certificat numérique privé
- Exécutez l'outil "Certificat numérique pour les projets VBA"
- Donnez un nom de certificat et appuyez "OK". (Un certificat est créé.)
- Démarrez Excel, puis ouvrez le document à signer depuis Excel.
- Ouvrez VBA (Alt+F11), sélectionnez le bon projet.
- Sur le menu de VBA, "Outils > Signature électronique > bouton Choisir"
- Choisissez le certificat que vous venez de créer, puis appuyez le bouton "OK"
- Enregistrer le document. Maintenant, si vous ouvrez le document, vous ne verrez pas la fenêtre d'interrogation de sécurité, même si Excel est configuré avec un niveau de sécurité moyen ou élevé.
Dans Internet Explorer > Outils > Options Internet > (onglet) Contenu, bouton > Cetificats, sélectionner le certificat puis Supprimer.
Niveau de sécurité d'Excel
Pour éviter de cliquer systématiquement sur le bouton de validation des macros à chaque ouverture de fichiers connus, Microsoft propose de "signer" les macros pour les identifier comme sures (voir ci-dessus). Une méthode beaucoup plus simple (mais bien moins sure) consiste simplement à ouvrir le fichier Excel par un script VBScript :
Exemple pour ouvrir le ficher Excel "mon_Fichier_Excel.xlsx":
set xl=createobject("Excel.Application")
xl.visible=true
xl.workbooks.open("C:\mon_Fichier_Excel.xlsx")
set xl=nothing
wscript.quit
xl.visible=true
xl.workbooks.open("C:\mon_Fichier_Excel.xlsx")
set xl=nothing
wscript.quit
Pour tester ce code, copiez-le dans un fichier bloc-note (sous le nom ouvre-toi.vbs) et enregistrez-le sur le burreau (par exemple). Double-cliquer dessus pour l'exécuter. Le VBS va ouvrir une nouvelle instance d'Excel puis lui demander d'ouvrir le fichier. Excel va en oublier de lancer l'alerte macro, quel que soit le niveau de sécurité choisi.