Analyse de code

papybob69

XLDnaute Nouveau
J'ai développé sous Excel une application à usage personnel.

Actuellement le code VBA de cette application comporte environ
18 000 lignes réparti sur une centaine de procédures.

Je ne peux plus retrouver tout les appels de procédures/routines
par une procédure de cette application. :confused:

Je rechercher une macro complémentaire ou un utilitaire qui puissent analyser le code
et sortir le résultat sous forme d'un tableau ou d'un organigramme


@+
 

papybob69

XLDnaute Nouveau
Re : Analyse de code

Merci Bebere pour l'info.

J'utilise déjà MZTools ver. 3.0.1186 en français.

Mais l'analyseur de code ne me donne que les variables et procédures présentent non utilisées.
À moins d'avoir zappé un réglage dans les options de MZTools?

Je cherche à obtenir la liste des procédures qui appel d'autres procédures.

@+
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Analyse de code

bonjour Papybob
pour commencer,une liste des macros du classeur
lire les commentaires
à partir de là tu expliques pour la suite
ou tu mets un exemple
à bientôt
 

Pièces jointes

  • ListeMacro.xls
    30 KB · Affichages: 96

papybob69

XLDnaute Nouveau
Re : Analyse de code

Bonsoir Bebere

Pour ce qui est de lister toutes les macros j’ai installé une macro complémentaire. Listeprocs.xla

le fichier au format ZIP de la macro complémentaire Listeprocs.xla est disponible sur ce site

Ce lien n'existe plus


Cette macro répertorie l'ensemble des procédures VBA présentes dans le classeur actif
et les liste dans une feuille de calcul (nom et type du module, nom de la fonction, accès Public ou Private, etc.)


Dans un second temp je cherche à lister uniquement les macros qui en cours d’exécution exécutent une autre macro

Exemple de structure de macro que je voudrais lister

Sub Macro1()

….ligne de code
….ligne de code

Macro2 (Exécution de la macro2)

….ligne de code
….ligne de code

End Sub



@+
 
Dernière édition:

papybob69

XLDnaute Nouveau
Re : Analyse de code

Bonjour Bebere,

Ce weekend j’ai téléchargé et testé le fichier ListeMacro.xls.

La liste de macros obtenue ne tien compte que des Macros enregistrées dans
[Modules] et ignore tout ce qui est dans [Microsoft Excel Objets], [Feuilles] et [Modules de classe].

Sont seul intérêt c’est de lister les raccourcis clavier s’il y en à.



:eek:
@+
 

Bebere

XLDnaute Barbatruc
Re : Analyse de code

bonjour Papybob
que donne ce code dans ton classeur
juste adapter les feuilles(feuil2)

Sub ListeMacrosModule()
'nécessite une référence à la librairie
'Microsoft Visual Basic For Application Extensibility 5.3
Dim VBCodeMod As CodeModule
Dim StartLine As Long
Dim ProcName As String
Dim I As Long, L As Long
L = 1
Feuil2.Cells.ClearContents

For I = 1 To ThisWorkbook.VBProject.VBComponents.Count
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents(I).CodeModule

With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
Feuil2.Cells(L, 1).Value = .Parent.Name 'VBCodeMod.Name '
Feuil2.Cells(L, 2).Value = .ProcOfLine(StartLine, vbext_pk_Proc)
StartLine = StartLine + .ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
L = L + 1
Loop
End With
Next I

End Sub

la 2ème partie est commencée,pour le moment toutes les lignes contenant le mot recherché sont récoltées
à bientôt
 

papybob69

XLDnaute Nouveau
Re : Analyse de code

Bonjour Bebere,

Merci pour ces quelques lignes de code

Au premier teste pas-à-pas la macro à fonctionnée mais les cellules restaient vide.

J’ai supprimé " Feuil2." devant "Cells…… " sur les trois lignes.

Cette fois ça fonctionne j’obtiens la liste des macros du projet


Maintenant il faut rechercher dans le code de la macro si le nom d’une ou plusieurs des autres macros du projet apparaît


@+
 

Bebere

XLDnaute Barbatruc
Re : Analyse de code

bonjour PapyBob
voilà où j'en suis
vois ce que cela donne de ton côté
à bientôt
 

Pièces jointes

  • ListeMacro.zip
    26.6 KB · Affichages: 63
  • ListeMacro.zip
    26.6 KB · Affichages: 68
  • ListeMacro.zip
    26.6 KB · Affichages: 69

papybob69

XLDnaute Nouveau
Re : Analyse de code

Re,

La commande [Débogage >Compiler VBAProject] appliqué au projet
ListeMacro.xls génère un message d’erreur de compilation

:eek: Nombre d'arguments incorrect ou affectation de propriété incorrecte

Macro du module3 en cause

Sub testZaza()
ChercheProcedure "ListeMacros"
End Sub



@+
 

Bebere

XLDnaute Barbatruc
Re : Analyse de code

bonjour Papybob
pas d'erreur içi
les 2 macros du bouton feuil2 sont dans module5
celle du bouton de feuil1 dans module1
le reste du bric à brac
regarde si listemacro existe,si non crée en une ou supprime testzaza
pour moi ce serait intéressant de savoir le résultat obtenu dans ton fichier
à bientôt
 

papybob69

XLDnaute Nouveau
Re : Analyse de code

Merci Bebere pour l’alerte, aucun virus détecté sur ma machine.

J’ai testé les macros que tu propose dans ListeMacro.xls cela fonctionne.

Mais ce n’est pas le résultat que je cherche à obtenir.

Voici une copie d’écran du résultat souhaité.

Mon résultat2.jpg

Tu peux voir que seule les Macros appelant d’autres Macros sont listées dans la colonne 1

@+
 

papybob69

XLDnaute Nouveau
Re : Analyse de code

Bonjour Bebere,

Le fichier ListeMacro.zip que tu demande

@+
 

Pièces jointes

  • ListeMacro.zip
    26.6 KB · Affichages: 63
  • ListeMacro.zip
    26.6 KB · Affichages: 72
  • ListeMacro.zip
    26.6 KB · Affichages: 66
Dernière édition:

Discussions similaires

Réponses
7
Affichages
436

Statistiques des forums

Discussions
312 669
Messages
2 090 740
Membres
104 644
dernier inscrit
MOLOKO67