Récupérer nom de fonction dans un module sous Access

sleepman23 Messages postés 18 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 11 mars 2005 - 24 août 2004 à 10:15
cs_garveur Messages postés 4 Date d'inscription mardi 26 août 2003 Statut Membre Dernière intervention 29 octobre 2007 - 28 avril 2005 à 15:50
Bonjour,

voilà dans une liste d'un formulaire, j'aimerais récupérer le nom de fonction ou procédure que j'ai créée dans un module.

Dans le module1, j'ai 15 fonctions et procédures. (ex Function DerOPP() As Long,...)

Est ce qu'il possible en passant par vba de récupérer ces noms pour les inscrires dans une liste.

Par avance merci pour l'aide que vous pourrez m'apporter

1 réponse

cs_garveur Messages postés 4 Date d'inscription mardi 26 août 2003 Statut Membre Dernière intervention 29 octobre 2007
28 avril 2005 à 15:50
Bonjour,

Pas trop tard j'espère.

Voici un exemple inspiré de l'aide de VBA Access , son défaut est qu'il ouvre et ferme le module concerné . Mais ça marche .

' Exmple d'utilisation dans le but de lister l'ensemble des fonctions et procédures
' disponible pour tous les modules de la base Access
Sub ListerTouteFonction()
Dim obj As AccessObject
For Each obj In CurrentProject.AllModules
Debug.Print obj.Name & " : " & AllProcs(obj.Name)
Next
End Sub


Public Function AllProcs(ByVal strModuleName As String) As String
Dim mdl As Module ' Module objet de la liste
Dim lngCount As Long ' Nombre de ligne du module
Dim lngCountDecl As Long ' Nombre de ligne de la section déclaration du module
Dim lngI As Long ' Indexe
Dim strProcName As String ' Nom de la procédure
Dim lngR As Long ' Type de procédure renvoyé par ProcOfLine
' Valeur Description
' vbext_pk_Get Procédure Property Get.
' vbext_pk_Let Procédure Property Let.
' vbext_pk_Proc Procédure Sub ou Function.
' vbext_pk_Set Procédure Property Set.



' Ouvre l'objet module spécifié en paramètre
DoCmd.OpenModule strModuleName


' Instancie l'objet module concerné (existant seulement après ouverture)
Set mdl = Modules(strModuleName)


' Nombre de ligne du module.
lngCount = mdl.CountOfLines


' Nombre de ligne dans la section déclaration du module.
lngCountDecl = mdl.CountOfDeclarationLines


' Evaluation du nom de la première procédure.
strProcName = mdl.ProcOfLine(lngCountDecl + 1, lngR)
' Initilaisation de la liste
AllProcs = strProcName & ";"


' Lecture en séquence de toutes les lignes du module avec rupture sur chaque nouvelle procédure.
For lngI = lngCountDecl + 1 To lngCount
' Rupture sur le nom de la procédure
If strProcName <> mdl.ProcOfLine(lngI, lngR) Then
strProcName = mdl.ProcOfLine(lngI, lngR)
AllProcs = AllProcs & strProcName & ";"
End If
Next lngI
' Fermture de l'instance Module
Set mdl = Nothing
' Fermeture de l'objet Module
DoCmd.Close acModule, strModuleName
End Function
0
Rejoignez-nous