VBA lister les macros sur une feuille

Bonjour à tous,

En vue de faire le ménage dans un projet assez important,

Y-a t-il moyen de faire une liste des macros sur une feuille du classeur ?

(La cerise : avec nom du module)

Bon dimanche

Claude.

bonjour Claude,

La macro nécessite d'activer la référence "Microsoft Visual basic For Application Extensibility 5.3"

Tu dois également paramétrer le niveau de sécurité :

menu Outils

Macro

Sécurité

Onglet "Sources fiables"

Assuretoi que les deux options sont cochées.

Clique sur le bouton OK pour valider.

Sous Excel 2007 :

Onglet "Développeur" dans le ruban.

Clique sur le bouton "Sécurité des macros" dans le groupe "Code".

Assure toi que l'option "Accès approuvé au modèle d'objet du projet VBA" est cochée.

'Nécessite d'activer la référence
    'Microsoft "Visual basic For Application Extensibility 5.3"
Dim Ajout As Integer
Dim VBCmp As VBComponent
Dim cdMod As CodeModule
Dim Wb As Workbook
Dim Debut As Long

'Indiquez le nom du classeur ouvert
'Set Wb = ThisWorkbook
Set Wb = Workbooks("Classeur1.xls")
Ajout = 1

'Boucle sur tous les composantsdu projet :
    'Modules standards
    'Modules de feuilles et de classeur
    'Modules de classe
    'UserForms
For Each VBCmp In Wb.VBProject.VBComponents
    Set cdMod = VBCmp.CodeModule

    With cdMod
        Debut = .CountOfDeclarationLines + 1
        Do Until Debut >= .CountOfLines
            'Nom de la procédure et du module
            Debug.Print VBCmp.Name & " / " & .ProcOfLine(Debut, vbext_pk_Proc)
            Debut = Debut + _
                .ProcCountLines(.ProcOfLine(Debut, _
                vbext_pk_Proc), vbext_pk_Proc)
            Ajout = Ajout + 1
        Loop
    End With

Next VBCmp

bonne journée

michel

re forum,

Michel, merci pour ta réponse, mais je ne trouve pas ou activer cette référence !

La macro nécessite d'activer la référence "Microsoft Visual basic For Application Extensibility 5.3"

et ou dois-je mettre le code ? dans un module classique avec un Sub... ?

J'ai pas tout pigé dans la boucle, je n'ai pas besoin des lignes de code, simplement les

modules et les noms de macros (une sorte d'organigramme, tu vois )

pour simplifier, lister dans la feuil1 du classeur actif.

Claude.

rebonjour,

Je ne trouve pas ou activer cette référence !

Dans l'éditeur de macros:

Menu Outils

Références

Coche la ligne "Microsoft Visual basic For Application Extensibility 5.3"

Clique sur le bouton OK pour valider

et ou dois-je mettre le code ?

Dans un module standard

dans un module classique avec un Sub... ? 

oui

J'ai pas tout pigé dans la boucle, je n'ai pas besoin des lignes de code, simplement les modules et les noms de macros (une sorte d'organigramme, tu vois )

La procédure ne liste que les noms de procédures

bon après midi

michel

re,

Bon, ton code tourne bien,

mais ou sortent les résultats ?

J'ai du loupé quelque chose !

voici ce que j'ai mis en place avec Sécurité Onglet "Sources fiables"

Sub essai()
    'Microsoft "Visual basic For Application Extensibility 5.3" *** vu ***
Dim Ajout As Integer
Dim VBCmp As VBComponent
Dim cdMod As CodeModule
Dim Wb As Workbook
Dim Debut As Long
'Indiquez le nom du classeur ouvert
Set Wb = Workbooks("Message_Forum.xls")
Ajout = 1

For Each VBCmp In Wb.VBProject.VBComponents
    Set cdMod = VBCmp.CodeModule

    With cdMod
        Debut = .CountOfDeclarationLines + 1
        Do Until Debut >= .CountOfLines
            'Nom de la procédure et du module
            Debug.Print VBCmp.Name & " / " & .ProcOfLine(Debut, vbext_pk_Proc)
            Debut = Debut + _
                .ProcCountLines(.ProcOfLine(Debut, _
                vbext_pk_Proc), vbext_pk_Proc)
            Ajout = Ajout + 1
        Loop
    End With

Next VBCmp
End Sub

je ne vois pas de résultat (petit fichier avec 2 modules et 4 ou 5 macros)

Claude.

édit: faut-il décocher les options après ?

bonsoir

Le résultat s'affiche dans la fenêtre d'exécution de l'éditeur de macros (raccourci clavier CTRL+G).

bonne soirée

michel

Michel,

J'ai eu un peu de mal à trouver, mais là c'est bon !

C'est exactement ce que je voulais.

y-a-t-il un risque en laissant l'option cochée ?

vaut-il mieux la retirer ?

En tout cas, merci pour ton aide

amicalement

Claude.

bonjour

y-a-t-il un risque en laissant l'option cochée ?

Non, il n'y a pas de risque à condition de respecter un principe de base : ne jamais activer les macros la première fois qu'on ouvre un classeur dont l'origine est inconnue. Vérifie préalablement le contenu des macros et leur action, ferme puis réouvre le classeur.

bonne journée

michel

Bonjour à tous,

Un code que je vais conservé précieusement ,

dommage qu'il ne soit pas intégré directement dans les options du menu !

merci Michel

à+......Claude.

rebonjour

dommage qu'il ne soit pas intégré directement dans les options du menu !

Il existe un utilitaire gratuit, MZtools, qui je pense doit réaliser cela. Il est intégré au menu de l'éditeur de macros

michel

re,

Merci pour l'info

Claude

Bonjour Michelxd

Votre code est parfait.

Sauriez-vous par hasard, si l'on peut obtenir les info suivantes, en plus de ce que votre code fournit déjà:

  • la touche de raccourci associé à la macro
  • le descriptif de la macro ?

Bonsoir à tous.

Je viens d'installer la macro de Michel. Tout fonctionne à merveille mais IMPOSSIBLE de trouver où visionner le résultat!!!

Quelqu'un pour m'aider?,,

A l'avance merci

Je viens d'installer la macro de Michel. Tout fonctionne à merveille mais IMPOSSIBLE de trouver où visionner le résultat!!!

Bonjour,

Dans l'éditeur de macro, fais Gtrl+G (ou affichage fenêtre d'exécution), les résultats y apparaitront (Debug.Print)

Rechercher des sujets similaires à "vba lister macros feuille"