Comment protéger ses macros VBA (limiter la consultation du code et le lancement) sur Excel ?

Pour ce nouveau chapitre de la formation dédiée à la découverte du langage VBA, nous allons découvrir comment protéger efficacement les lignes de codes de nos macros. Nous verrons ainsi comment ajouter une protection aux macros et quelles conséquences cela va avoir sur l’exécution des commandes depuis le classeur Excel. Et enfin pour finir, nous verrons comment protéger également le lancement de macros en mettant en place un système de mot de passe.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

1. Comment protéger l’accès au code VBA

Visual Basic Editor permet de protéger très facilement l’accès et la modification du code VBA.

Les raisons pour lesquelles nous pourrions avoir besoin d’une telle protection sont nombreuses :

  • Empêcher un utilisateur de modifier la macro (que ce soit intentionnellement ou non),
  • Empêcher qu’un code ayant demandé de nombreuses heures de développement ne soit copié,
  • Protéger l’accès à certaines fonctionnalités sensibles …

Pour cela, depuis l’éditeur de code, nous effectuons un clic droit sur le projet à protéger, puis nous choisissons le menu Propriétés de VBAProject… :

Excel formation - protection code vba - 01

Dans la fenêtre qui s’affiche, nous nous rendons dans l’onglet Protection, puis nous commençons par cocher l’option Verrouiller le projet pour l’affichage et ensuite nous saisissons deux fois le mot de passe (ici « test ») :

Excel formation - protection code vba - 02

Attention de bien retenir ce mot de passe, car il ne sera plus possible d’accéder au code du projet VBA sans celui-ci… (enfin théoriquement, nous y reviendrons un peu plus tard)

Cela étant fait, nous pouvons enregistrer le fichier pour que les modifications du projet soient maintenues, puis fermer et rouvrir à nouveau le fichier Excel.

Lorsque nous ouvrons à nouveau le classeur, et que nous nous rendons dans VBE, le projet VBA est maintenant réduit :

Excel formation - protection code vba - 03

À ce moment-là, les macros ne sont pas visibles depuis le projet, mais elles sont évidemment accessibles normalement.

Nous pouvons en effet revenir dans la feuille de calcul et appuyer sur les touches [Alt]+[F8] pour lancer la fenêtre de lancement des macros :

Excel formation - protection code vba - 04

De retour dans VBA, si nous essayons de le déployer pour le consulter ou le modifier, le mot de passe nous sera alors demandé :

Excel formation - protection code vba - 05

Il ne sera alors pas possible de le modifier tant que le mot de passe n’aura pas été renseigné… du moins théoriquement !

Gardez en effet toujours à l’esprit qu’aucune protection n’est réellement infaillible, et que si celle-ci vous permet de conserver vos secrets auprès de la plupart des regards indiscrets, une personne vraiment déterminée à faire sauter la protection pourra arriver à ses fins si elle s’en donne les moyens…

Une fois le mot de passe renseigné, nous pourrons bien sûr retrouver l’arborescence du projet :

Excel formation - protection code vba - 06

Et nous pourrons modifier le code !

L’accès au code déprotégé est possible jusqu’à ce que le fichier soit fermé.

Ensuite, lors de la prochaine ouverture il sera à nouveau nécessaire de venir saisir le mot de passe.

 

2. Conséquences sur le fonctionnement du classeur

Un point à savoir lorsque nous protégeons l’accès au code VBA, c’est que dans l’hypothèse où celui-ci viendrait à provoquer une erreur, il ne sera évidemment pas possible d’accéder directement à l’emplacement de celle-ci.

Le bouton Débogage n’est en effet pas disponible :

Excel formation - protection code vba - 07

Excel nous informe de l’origine de l’erreur, avec une description correspondante, mais c’est tout !

À ce moment-là, l’inconvénient auquel nous pourrions être confrontés, c’est qu’il ne sera pas possible de dépanner un utilisateur à distance sans lui transmettre au préalable le mot de passe.

En revanche, dès que le mot de passe est saisi et donc que le projet est débloqué, le bouton Débogage est à nouveau opérationnel :

 

3. Empêcher l’exécution de code par mot de passe

Un dernier point, sachez qu’il peut aussi être utile d’empêcher qu’une macro ne soit exécutée sans qu’un mot de passe ne soit saisi.

Pour cela, il suffit simplement d’ajouter l’instruction suivante en début de procédure :

    If InputBox("Veuillez saisir le mot  de passe pour exécuter la macro :", "Mot de passe")  <> "test" Then
        MsgBox "Mot de passe incorrect, la macro  va se fermer !"
        Exit Sub
    End If

Le fonctionnement de ce bout de code est très simple :

  • Excel affiche une zone de texte à l’utilisateur (avec l’instruction Inputbox), afin que celui-ci puisse saisir un mot de passe,
  • Lorsque le résultat saisi par l’utilisateur est différent du résultat attendu (ce qui sera le cas si l’utilisateur tape un mot de passe faux, s’il ne tape aucun texte ou encore s’il clique sur le bouton Annuler), alors un nouveau message l’informe de son erreur, et la macro est interrompue
  • En revanche, si le mot de passe est correct, l’exécution de la macro peut continuer

Bien entendu, étant donné que le mot de passe est clairement lisible dans le code, cette technique ne sera efficace que lorsque le code VBA sera protégé en utilisant la méthode vue juste avant.



Articles qui pourraient vous intéresser

Comment faire une pause en VBA sur Excel ?
Comment savoir si un fichier existe dans un dossier en VBA avec Excel ?
Comment protéger ses macros VBA (limiter la consultation du code et le lancement) sur Excel ?
Les 6 bonnes habitudes qui facilitent le développement en VBA sur Excel
Les tableaux de données d'Excel
Comment créer nos propres objets VBA avec les classes personnalisées [#30 FORMATION EXCEL VBA COMPLETE]
Comment lancer des macros automatiquement avec les évènements VBA : Les objets Workbook [#31 FORMATION EXCEL VBA COMPLETE]
Comprendre et corriger les erreurs de VBA [#29 FORMATION EXCEL VBA COMPLETE]
Comment créer des commentaires de pro sur Excel
Créons nos propres types de variables en VBA [#11 FORMATION EXCEL VBA COMPLETE]
Les tableaux de VBA [#27 FORMATION EXCEL VBA COMPLETE]
COMMENT UTILISER LES FONCTIONS HEURE, MINUTE, SECONDE ET TEMPS D’EXCEL

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.