Comment tracer le code VBA ?

bipbip

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterais construire une macro qui serait capable d'inscrire dans un fichier (TXT ou XLS), le nom de chaque macro qui s'exécute, en les notant les une à la suite des autres, comme si je les exécutaient pas à pas et que je relevais leur nom.
Exemple.
Je lance un de mes classeurs qui contient le code que j'ai créé.
suivant où j'ai inscrit du code, j'obtiendrait dans un fichier :
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Function Temps_de_Garde_Prévu(J As Integer)
Public Sub Affiche_Menu()
Private Sub UserForm_Activate()
Private Sub Tarif_Journalier_Exit(ByVal Cancel As MSForms.ReturnBoolean)
...etc.


Pensez vous que ce soit réalisable et si oui avez vous un exemple à me proposer ?

Merci de votre aide.
 

Orodreth

XLDnaute Impliqué
Re : Comment tracer le code VBA ?

Bonjour,

Manipulation des fichiers en VBA

Valable aussi pour Excel, éventuellement en nécessitant quelques modifications de codes.
Mais une excellente base pour se lancer sur la manipulation des fichiers.

Pour l'idée, si tu veux tracer chaque fois qu'une procédure s'exécute, en début et/ou fin de la procédure s'exécutant, tu rajoutes un code d'appel à ta procédure de traçage pour enregistrer l'évènement dans ton fichier de log.

Cordialement,
 

bipbip

XLDnaute Nouveau
Re : Comment tracer le code VBA ?

Merci Orodreth pour ta réponse.

Je vais suivre ton conseil et écrire une macro qui va se charger d'écrire le fichier TXT et appliquer cette macro à chacune de mes procédures.
Par contre as-tu une idée du comment faire passer le nom de la procédure en paramètre à ma macro qui écrira le fichier txt ?

@+
 

Jam

XLDnaute Accro
Re : Comment tracer le code VBA ?

Salut bipbip, orodreth,

Le traçage des appels de procédures dans VBA n'existant pas, la seule solution est d'utiliser une variable et de passer cette variable à une procédure d'écriture de log dans un fichier TXT comme indiqué par Orodreth qui te permettra de suivre ton programme. Schématiquement cela se présenterait sous cette forme:
VB:
Sub MaPremièreSub()
LogCallStack "MaPremièreSub"
...
End Sub

Sub MaDeuxièmeSub()
LogCallStack "MaDeuxièmeSub"
...
End Sub

Sub LogCallStack (strProcName As String)
Dim n As Integer


n = FreeFile()
Open "C:\test.txt" For Output As #n


Print #n, strProcName


Close #n
End Sub

Petite astuce, dans le menu Affichage de l'IDE tu peux afficher une fenêtre qui montre l'enchaînement des appels de procédure via le menu Pile des Appels (CTRL+L). Mais cela n'est pas programmable.

Bon courage
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 991
Membres
101 856
dernier inscrit
Marina40