Soyez le premier à donner votre avis sur cette source.
Snippet vu 16 273 fois - Téléchargée 27 fois
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
Application.Modules.Count renvoie le nombre de modules OUVERTS de l'application étudiée.
Or si par malheur vous avez fermé vos modules avant de sauvegardé .. il vous renverra automatiquement 0 ^^
C'est une information à ne pas oublier
http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread/thread/8d9e267d8b8d5806/929ef81fa5bf1a37%23929ef81fa5bf1a37
Salut.
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 ?
http://patrice.dargenton.free.fr/CodesSources/DBComp.vbp.html#115
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
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.