Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTER TOUS LES MODULES ET LES PROCÉDURES DE CHAQUE MODULE (VBA)


Information sur la source

Description

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

Source

  • 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
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
 

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 02/12/2005 16:11:05 administrateur CS

je conteste l'utilisation de
UBound(SBCode.SBModule) - 1

si tu as cela, c'est que ton tableau est mal dimensionné, car Ubound renvoie l'indice du dernier element du tableau, et non pas le nombre d'element.

fais plutot :
ReDim SBCode.SBModule(Application.Modules.Count)
et dans tes boucles For :
UBound(SBCode.SBModule)

signaler à un administrateur
Commentaire de EBArtSoft le 02/12/2005 18:13:14 administrateur CS

Je contest aussi !!

Faire :
ReDim SBCode.SBModule(Application.Modules.Count-1)

Car Count renvoi le nombre d'element or le tableau commence a zero !

@+

signaler à un administrateur
Commentaire de Renfield le 02/12/2005 18:28:13 administrateur CS

exact ^^ (un oubli après copier/coller)

ne pas oublier un petit test
If Application.Modules.Count > 0 Then

et tout devrai rentrer dans l'ordre, n'opérant que s'il y a de la matière première

signaler à un administrateur
Commentaire de Patrice99 le 03/12/2005 10:07:24

Pour Access, il est possible d'exporter en texte la totalité du code des formulaires et états, ainsi que le code design, voir ici :
http://patrice.dargenton.free.fr/CodesSources/DBComp.vbp.html#115

signaler à un administrateur
Commentaire de santiago69 le 15/05/2006 21:02:38

Salut sbertho,

Est-ce que tu peux m'eclairer sur la necesite de :
    DoCmd.OpenModule SBCode.SBModule(i).Nom
Ne suffit il pas d'appeler le module par
    Module(Nom)

Quel est l'interet de
    ReDim Preserve SBCode.SBModule(i).SBProcedure(ProcNbre)
puisque de toute facon ProcNbre est tjs a 0

Dans VBA-Excel, il ne reconnait ni "DoCmd", ni "vbext_pk_Proc".
Autre probleme, et de taille, "Application.Modules.Count" renvoi toujours 0 ! Quel que soit le nb de modules.

Y'a-t-il une DLL a charger ?

signaler à un administrateur
Commentaire de verlainenco le 02/02/2007 13:24:55

Pour Excel vous pouvez trouver une solution assez simple en suivant le lien suivant
http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread/thread/8d9e267d8b8d5806/929ef81fa5bf1a37%23929ef81fa5bf1a37

Salut.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

ACCESS VBA - Affecter le nom de la procédure en cours dans une variable [ par JM247L ] Bonjour,Pour la mise en forme d'une gestion d'erreur dans une application Access, je souhaiterai pouvoir récupérer dans une variable le nom de la proc Appelé une fonction public sub [ par cedricbollini ] Bonjour,Je suis novice en programmation VBA et je rencontre en ce moment deux petits problèmes,1er problème: je ne connais pas la syntaxe pour appeler vba excel +liste déroulante [ par flyersgoaler ] Bonjour, j'ai inséré une liste déroulante dans une cellule sur excel.  Chaque nom inséré dans la liste déroulante correspond à mes douze feuilles qui Liste des procédures [ par yvesyves ] Bonjour,Voilà, j'ai une combobox et un module contenant que des procédures.J'aimerai savoir s'il existe une façon de lister ces procédures afin de les Supprimer un module en VBA [ par dedenet2 ] Bonsoir à tous ,Pour créer un module nommé "test" , j'écris ce code:       Dim f As VBComponent       Set f = ThisWorkbook.VBProject.VBComponents.Add( VBA excel liste déroulante [ par flyersgoaler ] Bonjour, je cherche comment je peux insérer une liste déroulante dans une cellule en utilisant le langage vba.  Je voudrais donc pouvoir choisir un it trier une listbox en vba excel [ par Fabian123 ] Bonjour!tout est dans la question!j'ai une liste d'article sur une feuille excel, qui est chargée dans une listbox, la liste n'est pas triée (et je ne Procédure dans un module puis l'appeler [ par 4rocky4 ] Bonjour,J'ai plusieurs procédure sur plusieurs formulaires Access qui sont les mêmes.Et je voudrais mettre la procédure dans un module et l'appeler à Copie module VB vers VBA [ par love8906 ] Bonsoir à tous,je voudrais recopier le contenu d'un module (.bas) contenu dans une DLL vers VBA excel pour associer la procédure contenu dans ce modul liste déroulante excel vba [ par elisastas ] BonjourTout d'abords merci à tout ceux qui liront ce petit message.Je suis très novice mais en m'explicant je comprends <img class="inlineimg" title="


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.