Lister tous les modules et les procédures de chaque module (vba)

Contenu du snippet

Ce code permet de lister tous les modules et les procédures de chaque module (VBA)

Source / Exemple :


Option Compare Database
Option Explicit
'Déclarations
Public Mdule As module
Public LigneDec As Long
Public LigneCount As Long
Public Proc As String
Public ProcNbre As Integer
Public Type SBProcedures
    Nom As String
End Type
Public Type SBModules
    Nom As String
    SBProcedure() As SBProcedures
End Type
Public Type SBCodes
    SBModule() As SBModules
End Type
Public SBCode As SBCodes
Sub AnalyseCode()
    ReDim SBCode.SBModule(Application.Modules.Count)
    'Liste les modules
    For i = 0 To Application.Modules.Count - 1
        Debug.Print Application.Modules(i).Name
        SBCode.SBModule(i).Nom = Application.Modules(i).Name
    Next i
    'Parcoure les modules
    For i = 0 To UBound(SBCode.SBModule) - 1
        DoCmd.OpenModule SBCode.SBModule(i).Nom
        Set Mdule = Modules(SBCode.SBModule(i).Nom)
        LigneCount = Mdule.CountOfLines
        LigneDec = Mdule.CountOfDeclarationLines
        ProcNbre = 0
        ReDim Preserve SBCode.SBModule(i).SBProcedure(ProcNbre)
        Proc = Mdule.ProcOfLine(LigneDec + 1, vbext_pk_Proc)
        SBCode.SBModule(i).SBProcedure(ProcNbre).Nom = Proc
        'Liste les procédures
        For j = LigneDec + 1 To LigneCount
            If Proc <> Mdule.ProcOfLine(j, vbext_pk_Proc) Then
                ProcNbre = ProcNbre + 1
                Proc = Mdule.ProcOfLine(j, vbext_pk_Proc)
                ReDim Preserve SBCode.SBModule(i).SBProcedure(ProcNbre)
                SBCode.SBModule(i).SBProcedure(ProcNbre).Nom = Proc
            End If
        Next j
    Next i
    'Affiche les procédures dans la fenêtre debug
    For i = 0 To UBound(SBCode.SBModule) - 1
        For j = 0 To UBound(SBCode.SBModule(i).SBProcedure) - 1
            Debug.Print SBCode.SBModule(i).Nom + " : " + SBCode.SBModule(i).SBProcedure(j).Nom
        Next j
    Next i
End Sub

Conclusion :


Ce code me sert dans Access, je suppose qu'il est transposable dans d'autres applications Office utilisant le VBA et les modules

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.