Macro pour lister toutes les macros et UserForm d'un classeur

Gudo

XLDnaute Junior
Bonjour

J’ai trouvé une macro sur le forum, qui permet de lister tous les noms enregistrés d’un classeur dans une nouvelle feuille

Serait-il possible avec une macro de lister toutes les macros et les UserForms enregistrés d’un classeur dans une feuille ?

Merci
 

Roland_M

XLDnaute Barbatruc
Re : Macro pour lister toutes les macros et UserForm d'un classeur

bonsoir,

voir si cette routine peut te servir !?
elle qui doit être placée dans le classeur concerné !
pour l'exécuter il suffit de placer le curseur souris dessus et taper F5
un fichier texte (doc) et sauvegardé sur le rep en cours du classeur !
je l'ai fait pour des besoins perso ! si cela peut être utile ...!?
le fichier donne toutes les routines + nombre de lignes...

Code:
'                                                  .
'CETTE ROUTINE DOIT ETRE DANS LE CLASSEUR CONCERNE !
'elle load ttes les routines de ce classeur SOIT "ThisWorkbook"
'et Save les résultats dans un Fichier.Doc dans le Rep Courant !
'                                                             .
'Cocher Référence "Microsoft Visual Basic For Application Extensibility 5.3"
'                                                                          .
Public Sub SaveCodeMacroThisWorkbookDansFichDoc()
Dim VBCodeMod As CodeModule, Wbk As Workbook
Dim NbrDeRout As Integer, NbrDeRoutGlobal As Integer, NbrDeLigGlobal As Integer
Dim SwapValAlpha As String, SwapValNum As Integer
Set Wbk = ThisWorkbook
NbrDeComponent = Wbk.VBProject.VBComponents.Count
ReDim NomDeLaRout(1 To NbrDeComponent) As String, NbrDeLigRout(1 To NbrDeComponent) As Integer
For I = 1 To Wbk.VBProject.VBComponents.Count
 NomDeLaRout(I) = Wbk.VBProject.VBComponents(I).Name
 NbrDeLigRout(I) = Wbk.VBProject.VBComponents(I).CodeModule.CountOfLines
 NbrDeLigGlobal = NbrDeLigGlobal + NbrDeLigRout(I)
Next
X = NbrDeComponent / 2 ' tri
Do While X
 For A = 1 To NbrDeComponent - X
  If NomDeLaRout(A) > NomDeLaRout(A + X) Then
     SwapValAlpha = NomDeLaRout(A): NomDeLaRout(A) = NomDeLaRout(A + X): NomDeLaRout(A + X) = SwapValAlpha
     SwapValNum = NbrDeLigRout(A): NbrDeLigRout(A) = NbrDeLigRout(A + X): NbrDeLigRout(A + X) = SwapValNum
     For B = A - X To 1 Step -X
      If NomDeLaRout(B + X) >= NomDeLaRout(B) Then Exit For
      SwapValAlpha = NomDeLaRout(B): NomDeLaRout(B) = NomDeLaRout(B + X): NomDeLaRout(B + X) = SwapValAlpha
      SwapValNum = NbrDeLigRout(B): NbrDeLigRout(B) = NbrDeLigRout(B + X): NbrDeLigRout(B + X) = SwapValNum
     Next
  End If
 Next: X = X / 2
Loop
'save
Fich$ = Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1)
Fich$ = "VBCode " & Fich$ & ".doc": NoF = FreeFile
Open Fich$ For Output As #NoF
Print #NoF, ThisWorkbook.Name
Print #NoF, "Nombre de Composants  :"; NbrDeComponent
Print #NoF, "Nombre de Lignes Code :"; NbrDeLigGlobal
Print #NoF, "Nombre de Routines    : en fin de liste..."
NbrDeRoutGlobal = 0
For I = 1 To NbrDeComponent
 Set VBCodeMod = Wbk.VBProject.VBComponents(NomDeLaRout(I)).CodeModule
 Print #NoF, ""
 Print #NoF, "-- " & I & "'Composant -------------------- " & NomDeLaRout(I) & " ... " & NbrDeLigRout(I) & " Ligne(s)"
 NbrDeRout = 0
 With VBCodeMod
   Ligne = .CountOfDeclarationLines + 1
   Do Until Ligne >= .CountOfLines
     NbrDeRout = NbrDeRout + 1
     Z$ = .ProcOfLine(Ligne, vbext_pk_Proc): Print #NoF, NbrDeRout & ") " & Z$
     Ligne = Ligne + .ProcCountLines(.ProcOfLine(Ligne, vbext_pk_Proc), vbext_pk_Proc)
   Loop
 End With
 NbrDeRoutGlobal = NbrDeRoutGlobal + NbrDeRout
Next
Print #NoF, ""
Print #NoF, "Nombre de Routines Global :"; NbrDeRoutGlobal
Close #NoF
MsgBox "Fichier " & Fich$ & vbLf & "Save " & CurDir
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Macro pour lister toutes les macros et UserForm d'un classeur

Bonsoir
Je mets quelquefois dans certains classeurs une feuille "Aide" qui fait automatiquement l'inventaire des Feuilles, des noms de plages et des macros.
J'ai même un classeur d'installation qui s'appelle aussi "Aide.xls". Je le joins.
Il mets aussi des liens hypertextes pour les atteindre. Même les macros !
Cordialement.
 

Pièces jointes

  • Aide.xls
    313 KB · Affichages: 114
  • Aide.xls
    313 KB · Affichages: 103
  • Aide.xls
    313 KB · Affichages: 104

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro pour lister toutes les macros et UserForm d'un classeur

Bonsoir le fil, bonsoir le forum,

Je n'apporte rien de plus à ce fil mais je voulais juste y être abonné pour garder précieusement les propositions de Roland et Bernard...
 

Gudo

XLDnaute Junior
Re : Macro pour lister toutes les macros et UserForm d'un classeur

Bonsoir Roland_M

Je te remercie pour ton aide

J'ai un problème au lancement de la macro
Photo ci-jointe
 

Pièces jointes

  • Erreur.jpg
    Erreur.jpg
    73.6 KB · Affichages: 96
  • Erreur.jpg
    Erreur.jpg
    73.6 KB · Affichages: 99
  • Erreur.jpg
    Erreur.jpg
    73.6 KB · Affichages: 96

Gudo

XLDnaute Junior
Re : Macro pour lister toutes les macros et UserForm d'un classeur

Bonsoir Dranreb

Merci aussi pour ton aide
Ta solution me semble fort intéressante

Mais j'avoue que je suis un peu perdue

Peut-tu me donner un peu d'explication

Merci

A+
 

Dranreb

XLDnaute Barbatruc
Re : Macro pour lister toutes les macros et UserForm d'un classeur

Heu, oui. Concernant l'installation d'une feuille Aide, elle est proposée quand on désactive le classeur Aide.xls au profit d'un autre.
Il demande aussi la permission de corriger les styles "Normal", "Hyperlink" et "Followed Hyperlink" dans son nouveau classeur hôte.
Les listes des composants de celui ci peuvent être actualisées au moyen du bouton en haut "Réactualiser les listes de composants". Il ne détruit jamais de ligne de composant disparu contenant du texte descriptif dans la colonne de droite, il la hachure en rose. Effacer le texte pour qu'elle disparaisse à la prochaine réactualisation.
Le classeur est aussi équipé pour mettre à jour les descriptions conformément à un autre classeur contenant une feuille Aide à jour avec presque les mêmes composants.
Est-ce plus clair ainsi ?
À +
 

Dranreb

XLDnaute Barbatruc
Re : Macro pour lister toutes les macros et UserForm d'un classeur

Bonjour.
Vous ouvrez le classeur Aide.xls, puis le votre, dans la même la même fenêtre Windows bien sûr. Ou bien si le classeur cible est déjà ouvert, vous ouvrez le classeur Aide.xls (par menu Fichier, Ouvrir si vous n'êtes pas sûr d'ouvrir tous les fichiers dans la même fenêtre Excel), puis dans le menu Fenêtre d'Excel vous sélectionner le votre.
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 269
Messages
2 086 674
Membres
103 366
dernier inscrit
SkippyB94