Zoom sur la fenêtre exécution en VBA

Affichage

Dans l’édi­teur de VBA (ALT+F11), vous pou­vez affich­er la fenêtre Exé­cu­tion. Ctrl + g fonc­tionne aussi : 

Vous pou­vez faire un dou­ble-clic dans le titre de la fenêtre pour pou­voir la déplac­er rapi­de­ment, ou bien la remet­tre en bas du code.

Aus­si, CTRL+Espace fonc­tionne pour rapi­de­ment taper du code (intel­lisense).

Exemples

Une fois cette fenêtre affichée, il est ensuite pos­si­ble d’exé­cuter le code que vous entr­erez. Cepen­dant, ce code ne doit ni être déclaratif, ni sur plusieurs lignes (pas de Dim, Option Explic­it, If, For…Next).

Par exem­ple, si vous tapez Msg­box “Test”, puis vous appuyez sur Entrée, une boîte de dia­logue va s’afficher.

Voici d’autres exem­ples intéressants :

?Activeworkbook.Worksheets.Count Nom­bre de feuilles dans le classeur actif
?range(“A1”).Formula
?range(“A1”).FormulaLocal
Tra­duc­tion de la for­mule en A1, en Anglais et dans la langue “locale” d’excel.
For Each sh In Worksheets:Debug.Print sh.Name:Next Liste toutes les feuilles du classeur. Le “:” simule un retour à la ligne et per­met d’éviter la lim­i­ta­tion de l’in­ter­dic­tion de plusieurs lignes dans la fenêtre exécution.
NomDe­La­Macro avec les variablesExé­cute la macro avec les vari­ables spécifiées.
Nom­Vari­able = 12Change la valeur d’une vari­able, excel­lent pour rapi­de­ment avancer dans une boucle. Met­tez au préal­able un point d’ar­rêt dans la boucle.
?ActiveWorkbook.Path Chemin du fichier
?12+15Comme cal­cu­la­trice
Application.AutoCorrect.AddReplacement “iiii”, “=SI.NON.DISP(INDEX(Table_des_Résultat;EQUIV(Valeur_Cherchée_en_Colonne;Colonne_de_Recherche;0);EQUIV(Valeur_Cherchée_en_Ligne;Ligne_de_Recherche;0));Valeur_si_erreur)”Per­met de rem­plac­er iiii par la for­mule “=SI.NON.DISP(INDEX(Table_des_Résultat;EQUIV(Valeur_Cherchée_en_Colonne;Colonne_de_Recherche;0);EQUIV(Valeur_Cherchée_en_Ligne;Ligne_de_Recherche;0));Valeur_si_erreur)”
Plus d’in­fos ici et ici.

Suivre l’exécution de votre code principal

Durant l’exé­cu­tion du code prin­ci­pal, vous pou­vez aus­si suiv­re les valeurs de cer­taines variables.

Soit directement dans la fenêtre d’exécution

Si vous exé­cutez le code pas à pas, vous pou­vez deman­der la valeur d’une vari­able (en com­plé­ment à l’a­jout d’espions)

Soit avec Debug.Print

Par exem­ple, en util­isant Debug.Print “quelque chose”, “quelque chose” va appa­raître dans la fenêtre exécution.

Voici un exem­ple qui per­met de créer un log de l’exé­cu­tion de votre code.

 Sub test123()<br />     Dim i As Integer, j As Integer<br />     For i = 1 To 3<br />         Debug.Print "i= " & i<br />         j = i * 10<br />         Debug.Print "j =" & j<br />     Next<br /> End Sub 

D’où le résul­tat une fois le code exécuté.

En pra­tique, on utilise ces tech­niques pour débugguer un code, par exem­ple, en lis­tant les dif­férentes valeurs d’une variable.

Vider la fenêtre exécution

Vous pou­vez manuelle­ment vous plac­er dans la fenêtre, puis CTRL+A et ensuite Supprimer.

Il sem­ble que vider cette fenêtre en VBA soit plus dif­fi­cile qu’il n’y parait. Voici un lien qui en par­le : http://dailydoseofexcel.com/archives/2004/06/09/clear-the-immediate-window/

Pour aller plus loin, n’hésitez pas à inve­stir dans mes for­ma­tions sur excel et VBA : 

Sources :
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/use-the-immediate-window
https://www.excelcampus.com/vba/vba-immediate-window-excel/



Pour marque-pages : Permaliens.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.