Dans le chapitre précédent, vous avez compris comment lire une ligne de code. Et comme vous avez pu vous en rendre compte, il y a des choses à respecter.
Dans ce nouveau chapitre, nous allons mettre l’accent sur différents aspects du VBA tout aussi importants que le code. Nous allons commencer par comprendre le fonctionnement du VBE, comment exécuter du code, et la gestion des erreurs de celui-ci. Nous verrons dans un deuxième temps comment sauvegarder votre code et comment le sécuriser.
Appréhendez l’éditeur VBA
Vous allez passer pas mal de temps sur le VBE, c’est pourquoi il est important de comprendre rapidement comment il fonctionne et comment vous pouvez améliorer l’interface.
Nous avons vu plus haut qu’il y avait une fenêtre de projet et une fenêtre de code. Dans cette dernière fenêtre, vous pouvez voir que certains mots sont écrits en bleu, en noir ou en vert.
Mais qu’est-ce que cela veut bien dire ?
Bleu : Ce sont les mots-clés.
Vert : Ce sont les commentaires.
Noir : C'est le code classique.
Commençons par les mots-clés : ce sont des mots qui sont spécifiquement réservés par le VBE. Les mots en bleu ne peuvent pas être utilisés comme variables, par exemple (nous détaillerons plus loin le concept de variable). Ces mots ont une importance particulière car tous les mots-clés ont une utilisation particulière pour le VBE.
Par exemple, dans notre cas, le mot “sub” permet de déclarer le début d’une procédure (un programme).
Les commentaires ont une importance toute particulière pour tous les langages de programmation. Ils permettent de comprendre ce que fait le code. Au début de l’écriture d’un code, c’est assez simple de comprendre ou de se rappeler ; mais au bout de quelques dizaines de lignes et quelques jours, on se rend vite compte que c’est difficile de se rappeler ce que nous avons voulu faire. C’est pourquoi il est vraiment important de garder une rigueur sur les commentaires.
On peut, par exemple, expliquer une variable ou le rôle d’une variable, mais on peut surtout expliquer une partie de code ou de fonction entière.
Mais ça fait quoi un commentaire dans le code ?
Le commentaire dans le code, c’est simple, c’est un morceau de code qui ne va pas s'exécuter. Une ligne qui ne sera pas lue par le code.
En VBA, on utilise l’apostrophe “ ‘ “ pour que la ligne ne soit pas lue.
Mais parfois on a besoin de commenter plusieurs lignes d’un coup. Comme une grosse partie d’explication ou encore toute une partie d’un programme que vous ne souhaitez pas exécuter. Mettre des apostrophes devant chaque ligne, cela peut être long. Vous allez donc utiliser la fonction “Commenter bloc” ou “Ne pas commenter bloc” de l’éditeur VBE.
Pour faire apparaître cette option, il faut aller dans “Affichage” puis barre d’outils puis choisir “Édition”. Vous avez maintenant accès dans cette nouvelle barre d’outils à l’option “Commenter bloc” !
Pour finir, le code écrit en noir, c’est du simple code classique qui va être exécuté.
Exécutez du code dans le VBE
Contrairement à Excel où vous avez associé votre macro à un bouton et un raccourci clavier, il n’y a rien pour lancer votre macro de façon intuitive.
Dans le VBE, vous allez aller dans “Exécution” puis cliquer sur “Exécuter la macro”. Cela va avoir pour effet d'exécuter la macro entièrement. Vous pouvez également passer par le raccourci dans l’interface qui se matérialise comme le signe “play” en vert. Dernière façon de faire, utiliser le raccourci clavier F5 .
Il arrive assez fréquemment de vouloir tester les lignes une par une pour comprendre le code. Il faut donc utiliser le mode pas à pas détaillé en passant par Débogage puis en cliquant sur “Pas à pas détaillé”. À chaque fois que vous cliquez dessus, cela exécute une ligne et cela passe à la suivante. C’est bien pour tester une seule ligne, mais si on doit le faire à chaque fois, cela va être long et fastidieux. Il existe un raccourci clavier qui est F8. À chaque appui sur F8 , la ligne s'exécute et le code passe à la ligne suivante.
C’est une bonne solution, mais imaginez que vous vouliez regarder les 10 dernières lignes de notre code. Il va falloir commencer par appuyer 30 fois sur F8 pour arriver à la partie qui vous intéresse ! Pour pallier ce problème, vous pouvez définir ce que l’on appelle un point d'arrêt dans le code.
Ce point d'arrêt, matérialisé par un rond rouge dans la marge, s’ajoute en cliquant exactement là où est le point rouge dans la capture d’écran. Quand vous exécutez l’intégralité de votre code (F5), l'exécution va s'arrêter sur ce point d'arrêt et à partir de là vous pouvez utiliser le mode pas à pas (F8).
Appréhendez les erreurs en VBA
Quand vous commencerez à écrire du code en VBA, vous ferez des erreurs. C’est tout à fait normal de ne pas écrire du premier coup une ligne parfaitement, et le VBE est justement là pour vous expliquer une erreur.
Bon, je préfère vous le dire tout de suite, il ne va pas vraiment vous expliquer l’erreur. Il va essayer de vous décrire brièvement le problème qu’il a rencontré, et il va surtout nous donner la ligne qui comporte l’erreur.
Avec la pratique on comprend plus facilement les erreurs et dans le pire des cas, vous pouvez toujours aller voir sur Internet pour expliciter cette erreur.
Dans le code que vous avez utilisé jusqu’à maintenant, j’ai supprimé le “t” du select, et voici l’erreur que nous a renvoyée le VBE :
Objectivement, l’erreur n’est pas vraiment parlante mais vous pouvez par contre appuyer sur “Débogage” pour que le VBE vous surligne la ligne avec une erreur.
Sauvegardez vos scripts VBA
Il est maintenant temps d’aborder une partie très importante, le stockage de votre code. Écrire du code pour automatiser des tâches c’est bien, mais encore faut-il pouvoir le stocker quelque part, sinon cela n'a pas grand intérêt.
Si vous avez déjà essayé de faire une macro VBA et d’enregistrer votre fichier, vous avez dû avoir un message comme celui-là :
Faisons un point sur les différentes extensions dans Excel pour comprendre ce problème.
Voici la liste des différentes extensions Excel :
classeur Excel (.xlsx) ;
classeur Excel prenant en charge les macros (.xlsm) ;
classeur Excel binaire (.xlsb) ;
classeur Excel 93 - 2003 (.xls).
C'est-à-dire que si vous créez une macro et que vous enregistrez le fichier en classeur Excel (.xlsx), votre macro ne sera pas sauvegardée dans le fichier Excel. Car oui, de base, quand on crée une macro, elle est directement stockée dans le fichier Excel. L’extension XLSX est la seule à ne pas prendre en charge les macros.
À quoi servent les 3 autres extensions, alors ?
L’extension .xlsm a exactement les mêmes caractéristiques que le .xlsx sauf que cette fois, il accepte les macros dans le fichier Excel.
Le .xlsb est similaire au XLSM sauf que celui-ci compresse beaucoup mieux les données. C’est personnellement l’extension que j’utilise le plus souvent (on peut facilement réduire la taille d’un fichier de moitié avec cette extension).
Pour finir, le .xls, c’est une vieille extension d’Excel qui date de 1997 ; cette version, même si elle n’est plus censée être utilisée, est encore assez répandue (malheureusement).
Vous venez de voir quelles extensions acceptent de stocker du code. Retour maintenant à notre VBA pour mieux comprendre où se trouve notre code dans le fichier. Regardons cette fois la partie de gauche, la fenêtre Projet. Dans cette fenêtre on voit le nom de notre fichier Excel et 3 dossiers :
Microsoft Excel Objets : avec la feuille actuelle et ThisWorkbook ;
Feuilles ;
Modules.
On peut voir que votre enregistrement de macro a créé un dossier Modules dans lequel on retrouve le module 1 qui contient votre code. Nous verrons par la suite pourquoi le stocker dans le module ou directement dans la feuil1 ou dans ThisWorkbook. Pour le moment, il faut juste savoir que les macros se créent automatiquement dans un nouveau module.
Sécurisez votre application VBA
Maintenant que vous savez comment sauvegarder vos macros dans un fichier Excel, il faut les protéger. En effet, si vous laissez une macro dans un fichier et que quelqu’un ouvre le fichier et efface la macro, vous perdez votre code.
Nous verrons plus loin que nous ne sommes pas obligés de stocker le code de la macro directement dans un fichier. Cependant, une bonne pratique est dans tous les cas de mettre un mot de passe au VBE.
Pour ce faire, je vous invite à aller dans “Outils” puis “Propriétés de VBA Projet”. Dans cette nouvelle fenêtre, il faut aller sur l’onglet “Protection”. Vous voyez dans cette fenêtre que vous pouvez mettre un mot de passe (que vous devez taper deux fois). Vous avez également une option pour verrouiller le projet pour l’affichage qu’il faut cocher.
Une fois le mot de passe actif, enregistrez et fermez votre fichier Excel. Maintenant, ouvrez ce fichier, et surprise, vous ne pouvez plus éditer de macro, vous pouvez seulement l'exécuter.
Comment avoir à nouveau accès à l’édition alors ?
Allez dans l’onglet “Développeur" et cliquez sur “Visual Basic”. En allant dans votre projet, vous aurez l’opportunité de rentrer votre mot de passe pour déverrouiller le VBE.
À vous de jouer !
Votre manager est très content des modifications que vous avez apportées à votre code ! Maintenant que cette première macro est terminée, vous décidez de commenter la macro afin que vous puissiez vous remémorer ce qu'elle fait.
Vous décidez également de mettre un mot de passe afin de protéger la macro (la protéger de votre manager… on ne sait jamais ce qu’il peut faire) et d’enregistrer le fichier en .xlsb afin de réduire la taille.
Voici le résultat :
En résumé
Les mots-clés sont exclusivement réservés pour une utilisation par le VBE.
Certaines lignes ou portions de ligne dans le code sont des commentaires, qui permettent d’expliquer le code.
L’éditeur VBA peut vous donner une brève description et la ligne en erreur.
Il faut privilégier les extensions .xlsm et .xlsb qui sauvegardent le code de la macro dans le fichier.
Dans cette première partie nous avons enregistré et modifié notre première macro. Dans la prochaine, nous allons nous concentrer sur l’utilisation des variables et les opérations que nous pouvons faire avec, comme les opérateurs logiques, les boucles et pour finir, les formulaires. Mais avant ça, je vous laisse compléter le quiz qui suit, pour tester vos compétences !