|
DÉBOGAGE
Le débogage représente toutes les actions que vous effectuez
pour tester et corriger votre programme. En effet, malgré toute
l'attention que vous aurez apportée à votre travail, il
résidera toujours des erreurs que vous pourrez détecter
au cours de cette phase du travail. Certains programmeurs estiment que
pour la construction d'un programme 10% du temps est consacré à la
conception tandis que le débogage en utilise 90%.
Il vous permettra de débusquer :
- Les erreurs de compilation qui se produisent lors de la frappe du
code, les erreurs de ponctuation, mot clé mal orthographié,
propriété ou méthode n'existant pas pour l'objet.
Certaines de ces erreurs sont détectées par VBA au cours
de la frappe, mais d'autres le sont au moment de la compilation (transformation
de votre code en code exécutable) effectuée lorsqu'il
est exécuté pour la 1ère fois.
Exemple :
Sub NouvelleFlle
Worksheets.New
End Sub
- Les erreurs d'exécution qui se produisent pendant l'exécution
du code. Elles sont essentiellement dues à des données
erronées, des dépassement de capacités des types
de données, des erreurs dues à l'utilisateur. VBA vous
signale l'erreur pendant l'exécution avec un message parfois
peu explicite.
Exemple :
Function Double(X As Byte) As Byte
Double= X * 2
End Function
Dans tous les cas où X est supérieur à 127, ce programme
provoque une erreur de dépassement de capacité (Double étant
de type Byte, il ne peut accepter des valeurs supérieurs à 255).
- Les erreurs logiques qui ne génèrent pas d'erreur.
Mais le programme ne produit pas le résultat prévu.
Ce sont les erreurs les plus difficiles à détecter.
Exemple :
|
Function FrancEuro(dF as Double) as Double
FrancEuro = dF / 6.55957
End Function |
Ici la fonction renvoie
toujours une valeur mais elle n'est pas valide, en effet l'opération
aurait du être :
FrancEuro = dF * 6.55957 |
|
|
II.
Les moyens mis à votre disposition
|
Cette instruction, Option Explicit,
placée en haut de chaque module, impose de définir explicitement
chaque variable du module, quelque soit leur emplacement (intérieur
ou extérieur à une procédure). Cela implique donc
que vous devez déclarer chacune de vos variables en début
de module ou en début de procédure avec au minimum le mot
clé Dim.
L'utilisation de cette instruction permet alors :
- à VBA, de vous signaler une variable comme non déclarée,
lorsque vous avez fait une faute de frappe sur celle-ci.
- de vérifier au cours de la frappe, cette orthographe :
- déclarer vos variables avec 1 ou plusieurs majuscules,
exemple : strUnTexte
- tapez votre code en minuscule
- lorsque vous passez à la ligne suivante, les majuscules
se mettent automatiquement, vous vérifiez ainsi la
bonne orthographe de votre code.
|
Tapez |
|
Sub Essai()
Dim strUnText As String
End Sub |
|
Tapez avant End
Sub |
Passez à la ligne suivante,
cela s'affiche ainsi : |
|
struntext="Voici
le texte" |
strUnText
= "Voici le texte" |
- d'en profiter pour indiquer précisément le type de
données de la variable. Sinon, elles sont considérées
comme Variant, qui fonctionne moins rapidement. Vous pouvez déclarer
plusieurs variables sur une même ligne séparées
par une virgule, mais vous devez alors indiquer le type de données
pour chacune d'elles.
Exemple :
Dim strText1 as String, strText2 as String, iNb as
Integer
Dim strText1 as String,
strText2, iNb déclare les données ainsi :
strText1 de
type , strText2 et iNb de
type
Dim strText1 , strText2
as String déclare les données ainsi :
strText1 de
type , strText2 de
type
Pour placez systématiquement Option Explicit dans
tous les prochains modules : dans l'éditeur VBA, sélectionnez dans
le menu . Puis dans l'onglet Éditeur,
cochez l'option .
Puis .
II.2
La barre d'outils Débogage
Lorsqu'une procédure ne produit pas le résultat escompté,
un des moyens pour vérifier votre code est son exécution ligne
par ligne. Vous pouvez ainsi constater le déroulement de votre programme
et vérifier le contenu des variables et propriétés des objets.
La barre d'outils contient plusieurs
boutons permettant d'exécuter ou arrêter le programme :

- Le bouton
permet
de lancer l'exécution d'une procédure, vous pouvez également
utiliser la touche F5,
- Le bouton
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
permet
de reprendre le programme à son début. Ce bouton n'est
atteignable qu'en mode Arrêt.
L'exécution en pas à pas
Les 4 boutons suivants permettent d'exécuter le code ligne par ligne
de manière différente .
- Le bouton
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
appuie sur la touche F8.
- Le bouton
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
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 code
est exécuté en pas à pas détaillé |
 |
| Après
un clic sur Pas à pas sortant |
 |
- Le bouton
permet
d'exécuter le code jusqu'à la ligne contenant le curseur.
Ce bouton n'est pas automatiquement insérer dans la barre
d'outils , mais vous
le trouver dans le menu ou
pouvez l'ajouter à la barre d'outils.
II.3
Le mode Arrêt
Vous êtes dans ce mode lorsqu'une des lignes de votre code est en
surbrillance .
Plusieurs évènements peuvent provoquer ce mode :
- Une erreur est survenue et vous avez cliqué sur le bouton du
message d'erreur.
- Vous avez interrompu volontairement le déroulement du programme
en appuyant sur les touches Ctrl+Pause.
- Vous avez inséré un point d'arrêt dans votre
code et le programme est arrivé à cette ligne. Pour
insérer ou ôter un point d'arrêt :
- Cliquez sur la ligne où le programme doit s'arrêter
puis cliquez sur le bouton

- Ou cliquez devant la ligne dans la marge grise.
qui
devient ensuite 
- Le programme a rencontré une instruction Stop.
- Vous exécuter le code en pas à pas.
Vous pouvez alors, vérifier la valeur d'une variable ou d'une
propriété, exécuter une instruction dans la fenêtre
Exécution, poursuivre l'exécution du code normalement,
en pas à pas ou réinitialiser la procédure ou fonction.
II.4
Vérification des variables et propriétés
VBA vous propose plusieurs moyen pour visualiser la valeur des variables
et propriétés :
Placez
votre curseur au-dessus de la variable ou la propriété,
celle-ci s'affiche dans une info-bulle.
Vérifiez au préalable si dans l'onglet de
la fenêtre (sélectionnez du
menu ), l'option est cochée.
- Afficher la fenêtre ,
en cliquant sur le bouton
,
tapez un ? suivi de votre variable ou propriété d'objet,
puis appuyez sur la touche Entrée :
- Affichez la fenêtre Variables locales en cliquant sur le
bouton
.
Celle-ci affiche toutes les variables de la procédure ou fonction
en cours et propriétés de l'UserForm en cours.

Utilisez
les variables Espions, ces variables ou expressions que vous aurez
désignées comme espions s'affichent dans la fenêtre
Espions. Cette fenêtre affiche, en permanence, la valeur de chacun
de ces espions. Vous pouvez alors les comparer aisément. Pour
désigner un espion vous devez :
- Sélectionnez la variable ou l'expression
- Cliquez sur le bouton
ou
appuyez sur les touches Maj+F9
OU
- Sélectionnez la variable ou l'expression
- Cliquez à droite et choisissez ou dans le menu ,
sélectionnez .
- Dans la fenêtre qui s'ouvre vous pouvez modifier
l'espion, préciser la portée de cet espion
(dans sa procédure, toutes les procédures du
module, tous les modules), ainsi que son type (dans notre
cas, )
- Les options et permettent d'exécuter le programme
normalement, mais ce dernier passe automatiquement en mode arrêt
dès que la valeur est vraie ou différente de zéro
dans le 1er cas, dès que la valeur change dans le 2e cas.
- Utilisez l'objet Debug, celui-ci
représente la fenêtre Exécution et possède
uniquement 2 méthodes :
- Debug.Print listeExpression
où listeExpression correspond à une
liste d'expressions à afficher dans la fenêtre Exécution,
chacune de ces expressions sont séparées par une virgule.
- Debug.Assert ExpressionBooléenne
où ExpressionBooléenne correspond à une
expression renvoyant la valeur False ou True.
Cette instruction permet de suspendre l'exécution du code si ExpressionBooléenne est
fausse.
- Exemple :
Sub
EssaiDebug()
Dim iNb As Byte, iNbCarre As Integer
Dim Egal5 As Boolean
For iNb = 1 To 10
iNbCarre = iNb * iNb
Debug.Print iNb, iNbCarre
If iNb = 5 Then Egal5
= True
Debug.Assert Egal5
Next iNb
End Sub |
Affiche sur la fenetre Exécution les valeurs de iNb et iNbCarre.
Le code passe en mode arrêt tant que iNb est inférieur à 5. |
|