Easy-Micro

ESPACEMEMBRE VBA
Débogage VBA

Outils de débogage VBA

VBA Option Explicit

L'instruction Option Explicit, placée en haut de chaque module, impose de définir explicitement chaque variable du module avec au minimum le mot clé Dim. L'utilisation de cette instruction permet alors, théoriquement, à VBA, de vous signaler une variable comme non déclarée.

VBA La barre d'outils Débogage

La barre d'outils Débogage contient plusieurs boutons permettant d'exécuter ou arrêter le programme :

• Le bouton Exécuter Sub/UserForm permet de lancer l'exécution d'une procédure, vous pouvez également utiliser la touche F5,

• Le bouton Arrêt permet d'arrêter le programme en cours, mais il est souvent difficile à atteindre. En conséquence, utilisez plutôt la combinaison de touches Ctrl+Pause,

• Le bouton Réinitialiser permet de reprendre le programme à son début. Ce bouton n'est atteignable qu'en mode Arrêt.

• Les 4 boutons suivants permettent d'exécuter le code ligne par ligne de manière différente : soit en lisant tous le code (même celui qui est appelé hors du module: bouton pas à pas sortant), soit en restant dans le module.

◊ Le bouton "main" pour installer un point d'arrêt (comme le clic).
◊ Le bouton "Pas à pas détaillé" permet d'exécuter le code ligne après ligne. La ligne de code devant s'exécuter apparaît en surbrillance et s'exécute après un clic sur ou on appuie sur la touche F8.
◊ Le bouton "Pas à pas principal" permet d'exécuter le code ligne par ligne mais lorsque l'instruction de la ligne est un appel à une procédure ou à une fonction, cette dernière est exécuté entièrement et non ligne par ligne.
◊ Le bouton "Pas à pas sortant" permet de terminer la procédure en cours et s'arrêter, dans la procédure appelante, à la ligne suivante celle qui a appelé la procédure ou fonction.
Le bouton pas à pas sortant permet aussi en mode lecture pas à pas (F8), d'accéder directement à une ligne précise (comme avec Ctrl+F8)

• Les autres boutons ouvrent les 3 fenêtres de débogage en bas de l'écran (voir ci-dessous)

• Pile des appels : affiche la liste des appels de procédure dont l'exécution n'est pas terminée.

VBA Le mode Arrêt

Vous êtes dans ce mode lorsqu'une des lignes de votre code est en surbrillance suite à une erreur.

VBA Point d'arrêt

Pour insérer ou ôter un point d'arrêt, cliquez devant la ligne dans la marge grise.

VBA Les 3 fenêtres de débogage

Visualiser directement la valeur des variables
• Placez votre curseur au-dessus de la variable ou la propriété, celle-ci s'affiche dans une info bulle (uniquement en lecture pas à pas). Vérifiez au préalable si dans l'onglet éditeur de la fenêtre Options (Outils/Options), l'option "Info Express" automatique est cochée.
• Clic droit sur une variable, "infos express" pour voir le type de la variable

Afficher la valeur des variables dans la fenêtre exécution
Tapez un "?" suivi du nom de votre variable. Exemple :
?Range("A1").Value

Utilisez la fenêtre Variables locales
Par le menu Affichage / Variables locales. Cliquez ensuite en haut de votre code puis, par la touche F8, avancez pas à pas et regardez l'évolution de vos variables.

Utilisez les variables Espions
Une variable espion est une variable que l'on veut isoler des autres variables. Ces variables ou expressions que vous aurez désignées comme espions s'affichent dans la fenêtre Espions. Pour désigner un espion vous devez sélectionnez la variable ou l'expression et cliquez sur le bouton Espion Express (les lunettes) ou Maj+F9 ou clic droit "Ajouter un espion".

Utilisez l'objet Debug (Possède 2 méthodes: Print et Assert):
Debug.Print listeExpression
où listeExpression correspond à une liste d'expressions séparées par une virgule à afficher dans la fenêtre Exécution. Dans un Sub on saisie :
Debug.Print mavar1, mavar2

Cela affiche la valeur des variables dans la fenêtre Execution (uniquement en mode F8 : lecture à l'écran).

Debug.Assert ExpressionBooléenne
où ExpressionBooléenne correspond à False ou True. Cette instruction permet de suspendre l'exécution du code si ExpressionBooléenne est fausse.

Exemple d'utilisation de l'objet Debug :
Sub EssaiDebug()
Dim iNb As Byte, iNbCarre As Integer
Dim Egal5 As Boolean
Egal5 = True

For iNb = 1 To 10
   iNbCarre = iNb * iNb
   Debug.Print iNb, iNbCarre
     If iNb = 5 Then
     Egal5 = False
     Debug.Assert Egal5
    End if
Next iNb
End Sub

Utilisez l'objet Timer
Cet objet Timer permet d'afficher le temps d'exécution d'une procédure. Exemple :

Public temps As Single ' Déclaration de la variable

sub proc_test_le_temps()
temps = Timer

'ici code de la procédure

' Affiche le temps d'execution du code
MsgBox "Temps d'exécution : " & Timer - temps

 ' ou bien : Debug.Print "Temps d'exécution : " & Timer - temps

End Sub


< Page précédente VBA Page suivante >