Bonjour,
Y a-t-il moyen de savoir si une macro se déroule en pas à pas ou non ?
Le but serait de n'exécuter certaines lignes que dans ce cas :
Code:if pasApas then Worksheets("Feuil1").Activate
Version imprimable
Bonjour,
Y a-t-il moyen de savoir si une macro se déroule en pas à pas ou non ?
Le but serait de n'exécuter certaines lignes que dans ce cas :
Code:if pasApas then Worksheets("Feuil1").Activate
Que veux tu dire par pas à pas ??
Exécution de la macro en Mode débogage (F8)
Bonjour,
ça ma paraît contre nature comme truc ;) tu veux en venir à quoi ? visualiser par des Activate des feuilles que tu ne Select ou Activate pas justement dans le code de base afin de vérifier visuellement si il s'y passe ce que tu désires ?
Vu que du doit dans ce cas créer des lignes de debogage comme celle que tu invoques, tu peux Créer une variable Public drapeau que tu mets à true manuellement (ligne commentée ou non ou dans la fenêtre exécution...) du genre :
tu peux en final créer un outils de nettoyage pour supprimer ces lignes automatiquement plus que manuellement (si nombreuses).Code:if Drapeau = true then Worksheets("Feuil1").Activate
cordialement,
Didier
Merci pour ta réponse.
C'est bien cela vérifier si cela se passe correctement, c'est dans une transposition de données en lignes dans lesquelles j’extraie des données selon les mots avant ou après.
Et si tout va bien ca fait clignoter mon écran.
On cherche parfois des choses compliquées où ca peut être simple.
Sinon j'avais pensé à un truc comme cela :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Sub test_pasApas() Dim Drapeau If Application.VBE.VBProjects.VBE.MainWindow.Visible = True Then If MsgBox("Voulez-vous activer le déboggage ++ ?", vbYesNo, "vbe visible") = vbYes Then Drapeau = True End If End If If Drapeau Then Application.ScreenUpdating = True Else Application.ScreenUpdating = False End If ' MONCODE 'un check If Drapeau Then Worksheets("Feuil1").Activate 'un stop If Drapeau Then stop Application.ScreenUpdating = True End Sub
Bonjour,
Il existe aussi l'instruction Debug.Assert<Condition> qui permet d'interrompre l'exécution du programme si la condition est fausse.
Exemple Dans cet exemple interruption du programme quand I vaudra 5.
Code:
1
2
3
4 Dim i As Integer For i = 1 To 100 Debug.Assert i <> 5 Next
Merci Philippe, je ne connaissais pas, mais quelle est la différence avec un
if TRUE THEN STOP ?
Bonjour,
Ben si ;) parce que tu as pris soin de nommer ta variable drapeau de façon particulière et c'est sur elle que tu fais la recherche, sur des projets de plusieurs milliers de ligne, tu peux du coup même te créer une famille de quelques nom clefs spécifiques selon ce sur quoi tu veux agir.
Surtout en utilisant MzTools comme le fait Oliv-.
Mais je crois que toutes les méthodes sont OK, c'est le contexte qui fait qu'elles soient plus ou moins pertinentes.
cordialement,
Didier
Bonjour,
Un autre moyen dont je me sers aussi beaucoup (c’est selon l’importance du projet), ce sont des lignes qui restent écrites dans la fenêtre exécution. Il suffit de mettre une section ad-hoc dans le WorkbookOpen de ton projet avec des trucs du genre (bien mettre les guillements...) :
et on lance direct d'un clic sur la ligne voulue, ça dépend aussi du nombre et de la surface d'écran disponibles :DCode:
1
2
3 Debug.Print "Worksheets(1).Activate" Debug.Print "call NoProtectF"
cordialement,
Didier