Introduction
En VBA (Visual Basic for Applications), il est souvent nécessaire de passer en revue une macro afin d'identifier et de corriger des problèmes sur celle-ci.
Cette démarche porte un nom : le débogage. Elle dispose également d'une méthode : le pas à pas détaillé.
La première chose à faire est d'accéder au code VBA via le raccourci ALT + F11.
Il faudra ensuite se rendre sur le bon module et sur la bonne sous-procédure.
Pour commencer à inspecter la macro que vous voulez, cliquer sur la touche F8 de votre clavier (ou bien Fn + F8). Une ligne jaune vient de s'ajouter sur la première ligne de votre code et votre pas à pas vient de commencer.
La macro va donc s'exécuter en mode pas à pas au fur et à mesure que vous appuierez sur la touche F8 pour lire les lignes de code.
Pour sa part, SHIFT + F8 permet d'exécuter la totalité d'une macro lorsqu'elle est appelée par une autre macro.
Ajouter un point d'arrêt
Imaginons maintenant que votre macro est très longue, disons 150 lignes, et vous ne souhaitez évaluer que les 10 dernières lignes de la macro car vous les avez rajoutées récemment et car vous n'avez pas de doute sur les 140 premières lignes.
Au lieu de cliquer 140 fois sur F8, vous allez ajouter un "point d'arrêt" sur la 139e ligne. Ensuite, vous pouvez cliquer sur la touche F5 ou le bouton Lecture sur l'éditeur. Grâce à cela, le code s'est exécuté jusqu'à cet endroit, en un clic au lieu de 139. Et vous n'avez plus qu'à repasser en pas à pas détaillé sur les 10 dernières lignes.
Pour le débogage, vous pouvez également compter sur les éléments ci-dessous.
Les Espions (ou Watchers)
Les espions sont des observateurs, des fonctions d'observation sur les objets VBA, qu'il soient en variable ou non.
Les espions peuvent s'avérer très bénéfiques lorsqu'on travaille sur des macros complexes, avec une multitude de variables.
Par exemple, dans votre macro, si vous utilisez 8 variables d'entrée pour calculer une variable en sortie et que la valeur de cette dernière n'est pas encore affichée dans l'interface, il peut être utile d'ajouter un espion sur celle-ci afin de connaitre sa valeur.
Pour cela, si la variable se nomme 'Calcul', on peut faire clic droit sur celle-ci puis 'Ajouter un espion'. On peut également faire le raccourci Shift + F9.
Dans la fenêtre d'espion, qui est en bas, on verra alors la valeur de la variable 'Calcul', en temps réel.
PS : il est également possible de connaitre la valeur d'une variable en passant la souris dessus. Une infobulle avec la valeur de la variable s'affiche alors à l'écran.
Exemple de débogage avec la fenêtre d'espion sur une boucle For
Un autre cas d'usage intéressant de la fenêtre d'espion est le suivant :
Votre macro doit s'exécuter sur 100 lignes au travers d'une boucle For (avec un itérateur 'NuméroDeLigne') mais vous souhaitez voir comment elle travaille seulement sur la ligne 62.
Au lieu d'appuyer sur la touche F8 un très grand nombre de fois, et plutôt que d'ajouter un point d'arrêt (qui de toute façon ne servira pas dans cet exemple car il ne peut être qu'avant ou après la boucle, mais pas lui dire de s'interrompre juste avant la ligne 62), on pourra alors ajouter un espion sur la variable d'itération 'NuméroDeLigne' et mettre sa valeur à 61, afin d'arriver juste avant la ligne à analyser.
La fenêtre d'exécution
Cette fenêtre peut s'ouvrir grâce au raccourci CTRL +G et se situe en bas de l'écran.
Grâce à celle-ci, il est possible de connaître à un instant T la valeur d'une variable.
Par exemple si je souhaite connaitre la valeur de la variable MontantHT, il suffit d'écrire dans cette fenêtre '?MontantHT' ou bien '?MontantHT.Value'. Et la VBA retourne la valeur immédiatement.
Cela peut être utile si vous souhaitez également connaitre la ligne sur laquelle la macro s'est interrompue. En partant du principe que la variable a été nommée 'ligne', il suffira d'écrire '?ligne'.
Les commentaires
Il est nécessaire d'ajouter des lignes de commentaire au début des macros et régulièrement dans le code afin d'améliorer sa maintenabilité et sa lisibilité.
Pour ajouter un commentaire, il faut saisir un guillemet simple puis saisir le texte de commentaire.
Bonne pratique : si vous souhaitez vous débarrasser d'une ligne de code, Il ne faut pas supprimer la supprimer mais le neutraliser, en commentant cette ligne.
Pour cela, allez dans l'onglet Affichage > Barre Outils > Edition >Commenter Bloc / Ne pas Commenter Bloc. Indentation = Aerer le code pour améliorer sa lisibilité, ramifier les éléments Onglet Affichage > Barre Outils > Edition >Retrait / Retrait Négatif (indentation) Il est préférable d'ajouter des espaces pour améliorer la lisibilité du code.
Cet article vous a plu ? Vous pouvez également découvrir notre article sur les variables en VBA ou demander une formation VBA éligible au CPF.
コメント