TOP

VBA-Leçon 2. Débogueur (Debugger)

YouLibreCalc for Excel logo

Un outil dans l'environnement VBA pour déboguer le code du programme. Être capable de travailler avec un débogueur est vital pour quiconque écrit sur VBA. Il est nécessaire pour vérifier le fonctionnement de votre code et pour y rechercher et corriger les erreurs.


Ouvrez Visual Basic Editor (Alt+F11). Créez un module dedans et écrivez le code suivant :

 Sub LearningDebug()
    Dim A As Long, B As Long, C As Long, D As Long

    D = 0
    A = 10
    Debug.Print "A = " + Trim(Str(A))
    B = 15
    Debug.Print "B = " + Trim(Str(B))
    C = A + B
    Debug.Print "C = " + Trim(Str(C))
    C = Round(C / 5)
    Debug.Print "Divide С by 5: C = " + Trim(Str(C))  'C est divisé par 5 : C =
    C = Round(C / D) 'il y aura une erreur ici, puisqu'il est impossible de diviser par zéro (et D = 0)
End Sub

Appuyez sur Ctrl+G et la fenêtre Immediate apparaîtra en bas. Dans cette fenêtre, lors du fonctionnement de la macro, vous pouvez modifier les valeurs des variables, exécuter du code différent sur VBA, non écrit dans le module auparavant.

Si vous placez le curseur à l'intérieur du code du module et appuyez sur F5, il sera exécuté complètement. Si vous appuyez sur F8, une seule ligne de code sera exécutée. La prochaine pression sur F8 exécutera la ligne de code suivante, et ainsi de suite. vous pouvez parcourir tout le code. Vous pouvez créer un point d'arrêt à l'aide du bouton F9. Si vous exécutez ensuite le code à l'aide de la touche F5, le code s'exécutera jusqu'à la ligne spécifiée, puis s'arrêtera. Elle peut ensuite être poursuivie à l'aide des boutons F5 ou F8 décrits précédemment.

Si vous regardez attentivement le code, vous verrez que les variables A, B, C, D reçoivent des numéros. Les lignes Debug.Print "text" impriment le texte que nous avons spécifié dans la fenêtre Immediate précédemment ouverte pour voir ce qui se passe avec la variable. Str(A) convertit un nombre en valeur texte. Et Trim() en supprime les espaces à droite et à gauche. L'opérateur Round(C) arrondit la valeur selon les règles de l'arithmétique à un nombre entier (on affecte donc le résultat des calculs à une variable de type entier Long, ce qui signifie qu'il doit s'agir d'un nombre entier). À la fin du code, nous avons spécifiquement créé une fausse situation pour s'entraîner à utiliser le débogueur.

Tenez-vous à l’intérieur du code et appuyez quatre fois sur F8. La ligne qui sera exécutée ensuite sera marquée en jaune. Survolez les différentes variables. Dans le même temps, une fenêtre pop-up apparaîtra dans laquelle vous verrez leur valeur. Les variables auxquelles aucune valeur n'a encore été attribuée sont égales à zéro. Appuyez à nouveau sur F8. Une ligne apparaîtra dans la fenêtre Immediate : A = 10 Nous pouvons maintenant changer la valeur de la variable A immédiatement dans la fenêtre Immediate (par exemple, la changer en 8). Pour cela, dans une nouvelle ligne de la fenêtre Immediate, écrivez : A = 8 et appuyez sur Enter. Survolez maintenant la variable A et voyez que sa valeur est 8. pour voir la valeur sans survoler, vous pouvez la faire apparaître dans la fenêtre Immediate. Cela se fait ainsi, entrez dans la ligne vide de la fenêtre Immediate : ?A et appuyez sur Enter. Signe? dans la fenêtre, Immediate signifie la même chose que Debug.Print dans le code. C'est juste plus facile et plus court d'écrire de cette façon. Vous verrez immédiatement le numéro - le résultat de votre demande.

Placez le curseur sur la dernière ligne de code (C = Round (C/D)) et appuyez sur F9. Un point d'arrêt apparaîtra. Vous pouvez le supprimer avec le même bouton, mais nous ne le supprimerons pas encore. Appuyez sur F5, le programme exécutera toutes les lignes et s'arrêtera à la dernière. Dans la fenêtre Immediate, des messages sur l'attribution de valeurs aux variables apparaîtront. Nous avons atteint la dernière ligne de code. Il devrait générer une erreur car il contient une division par zéro. Appuyez sur F8 et voyez par vous-même. Dans la fenêtre qui apparaît, cliquez sur Debug. Si vous appuyez sur End, l'exécution du programme s'arrêtera et nous voulons le terminer.

Vous pouvez corriger la situation en modifiant la valeur de la variable D. Elle est désormais égale à zéro. Dans la fenêtre Immediate, saisissez le texte : D = 2 dans une ligne vide et appuyez sur Enter. Désormais, avec la dernière ligne de code, on divise non pas par zéro, mais par 2, évitant ainsi une erreur. Appuyez sur F5 et le programme terminera son travail sans erreur.

Essayez de changer le code et entraînez-vous à utiliser le débogueur. Croyez-moi, cela vous facilitera grandement la vie.