Débogage et gestion des erreurs
Les différents types d’erreur
On distingue différents types d’erreur dans le langage VBA :
-
Les erreurs de syntaxe.
-
Les erreurs de compilation.
-
Les erreurs d’exécution.
-
Les erreurs de logique.
1. Les erreurs de syntaxe
Les erreurs de syntaxe peuvent être décelées automatiquement lors de la saisie du code dans VBA.
Pour activer la vérification de syntaxe, dans le menu Outils, sélectionnez Options, puis sélectionnez l’onglet Éditeur et cochez la case Vérification automatique de la syntaxe.
Exemple
Les erreurs de syntaxe non corrigées provoqueront une erreur de compilation, d’où le message affiché.
2. Les erreurs de compilation
Les erreurs de compilation sont décelées lorsque Excel tente de compiler votre code.
Le code VBA peut être compilé de deux façons :
-
À la demande en sélectionnant l’option Compiler du menu Débogage. Dans ce cas le code est entièrement compilé.
-
Automatiquement lors de l’exécution du code. Dans ce cas, le code contenu dans les procédures n’est compilé que lors du premier appel de la procédure. Les procédures non appelées ne seront pas compilées.
Il est recommandé de compiler le programme avant de l’exécuter afin de gagner du temps sur la mise au point.
Exemple
Il est possible d’anticiper les erreurs d’exécution dues à des variables non déclarées en utilisant l’instruction Option Explicit. Si vous tentez d’utiliser un nom de variable non déclarée, une erreur se produit lors de la compilation.
3. Les erreurs d’exécution
Les erreurs d’exécution sont décelées lorsque Excel tente d’exécuter votre code. Une instruction, une opération...
Débogage
1. Présentation
Le débogage peut être activé de différentes façons :
-
En exécutant le programme pas à pas.
-
En marquant des points d’arrêt au niveau d’instructions VBA.
-
En cliquant sur le bouton de commande Débogage lorsqu’une erreur d’exécution survient.
Les différents outils de débogage permettent alors :
-
De connaître à tout moment la valeur des variables ou des expressions.
-
D’exécuter des instructions.
-
De modifier interactivement le code.
-
D’exécuter le code pas à pas.
-
D’ajouter des points d’arrêt.
2. La barre d’outils Débogage
Le barre d’outils Débogage permet d’accéder directement aux différents outils de débogage.
1. Mode création : active ou désactive le mode création.
2. Exécuter (raccourci-clavier [F5]) : exécute le code de la procédure en cours, de la feuille UserForm active ou d’une macro.
3. Arrêt (raccourci-clavier [Ctrl][Pause]) : interrompt l’exécution du programme en cours et passe en mode Arrêt.
4. Réinitialiser : efface le contenu des variables et réinitialise le projet.
5. Basculer le point d’arrêt (raccourci-clavier [F9]) : définit ou supprime un point d’arrêt sur la ligne en cours ; le code est exécuté jusqu’au point d’arrêt, puis passe en mode débogage.
6. Pas à pas détaillé (raccourci-clavier [F8]) : exécute le code en marquant un arrêt après chaque instruction de la procédure en cours et des procédures appelées.
7. Pas à pas principal (raccourci-clavier [Maj][F8]) : exécute le code en marquant un arrêt après chaque instruction de la procédure...
Gestion des erreurs en VBA
Lorsqu’une erreur se produit, VBA génère parfois une erreur d’exécution qui interrompt l’application. D’autres erreurs peuvent amener le code VBA à se comporter de manière imprévisible.
Pour éviter ceci, il est possible de traiter l’erreur à l’aide des instructions et fonctions suivantes :
On Error (instruction)
Indique une séquence d’instructions à exécuter en cas d’erreur.
Syntaxe 1
On Error GoTo ligne
Active la routine de gestion d’erreur qui commence à l’endroit spécifié par l’argument ligne.
L’argument ligne doit être une étiquette de ligne ou un numéro de ligne.
La ligne doit appartenir à la même procédure que l’instruction On Error.
Si l’argument ligne est un numéro de ligne, celui-ci doit obligatoirement être le premier caractère non vide de la ligne.
Syntaxe de la routine de gestion d’erreur
Ligne:
instructions
Resume
L’instruction Resume permet de reprendre l’exécution du code lorsque la routine de gestion d’erreur est terminée, c’est-à-dire une fois réglé le problème posé par l’erreur.
Vous pouvez utiliser trois syntaxes différentes pour Resume :
Resume 0 |
reprise de l’exécution du code là où l’erreur s’est produite. |
Resume Next |
reprise à partir de l’instruction qui suit immédiatement celle qui a généré l’erreur. |
Resume Ligne |
reprise à l’endroit spécifié par l’argument Ligne. |
Pour empêcher l’exécution du code de gestion d’erreur en l’absence d’erreurs, placez une instruction Exit Sub, Exit Function ou Exit...