Bonjour,
est ce qu'il existe un code permettant de recenser les procédures et fonctions VBA d'une base Access (courante ou en donnant un chemin) ?
Version imprimable
Bonjour,
est ce qu'il existe un code permettant de recenser les procédures et fonctions VBA d'une base Access (courante ou en donnant un chemin) ?
Salut,
Oui, j'ai des modules et un form qui me permettent d'avoir le nom de tout les objets de ma base, le noms, le code. Par exemple le nom des tables, form, requêtes, modules et si je veux je peux même avoir le code VBA.
Le tout s'écrit dans un fichier texte.
Pièce jointe 549279
A+
C'est intéressant, est ce que tu peux partager cette appli et son code ?
mais ce que je cherche est de lister les fonctions / procédures dans chaque module VBA
Tu voudrais juste le nom sans le code.
Bonjour.
Pour info il existe un outil de documentation dans Access qui peut peut-être répondre à ton besoin.
Dans la version 2013, il est dans le volet "Outils de base de données" "Documentation de la base de données".
Bon cela fait un rapport assez long et indigeste. Quand je m'en sers je l'imprime "en pdf" pour pouvoir ensuite faire des recherches dedans.
C'est loin d'être le truc idéal mais cela ne nécessite aucun codage.
A+
Merci pour les réponses, l'export "papier" est effectivement intéressant, mais il faut l'exporter et retravailler la données, ce sera un bon plan B
En cherchant ça et là, il s'avère qu'il y a bien un code qui permet de le faire en VBA
je viens de trouver ça http://www.cpearson.com/excel/vbe.aspx
ça utilise la référence à "Microsoft Visual Basic For Applications Extensibility 5.3", avec des objets de type VBIDE
il y a du code … mais c'est du VBA "Excel" faisant référence à des worksheet, est ce que ce serait possible de l'adapter à du VBA Access ?, là je coince
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 Sub ListProcedures() Dim VBProj As VBIDE.VBProject Dim VBComp As VBIDE.VBComponent Dim CodeMod As VBIDE.CodeModule Dim LineNum As Long Dim NumLines As Long Dim WS As Worksheet Dim Rng As Range Dim ProcName As String Dim ProcKind As VBIDE.vbext_ProcKind Set VBProj = ActiveWorkbook.VBProject Set VBComp = VBProj.VBComponents("Module1") Set CodeMod = VBComp.CodeModule Set WS = ActiveWorkbook.Worksheets("Sheet1") Set Rng = WS.Range("A1") With CodeMod LineNum = .CountOfDeclarationLines + 1 Do Until LineNum >= .CountOfLines ProcName = .ProcOfLine(LineNum, ProcKind) Rng.Value = ProcName Rng(1, 2).Value = ProcKindString(ProcKind) LineNum = .ProcStartLine(ProcName, ProcKind) + _ .ProcCountLines(ProcName, ProcKind) + 1 Set Rng = Rng(2, 1) Loop End With End Sub Function ProcKindString(ProcKind As VBIDE.vbext_ProcKind) As String Select Case ProcKind Case vbext_pk_Get ProcKindString = "Property Get" Case vbext_pk_Let ProcKindString = "Property Let" Case vbext_pk_Set ProcKindString = "Property Set" Case vbext_pk_Proc ProcKindString = "Sub Or Function" Case Else ProcKindString = "Unknown Type: " & CStr(ProcKind) End Select End Function
Bonjour.
Oui c'est un palliatif vite fait mais peu exploitable par une machine.
Accéder au code VBA est pas mal pénible avec du VBA
Ici une discussion sur le sujet.
http://www.utteraccess.com/forum/Rea...-t2021888.html
Une autre astuce possible est d'exporter les objets sous forme de fichiers textes puis de lire les fichiers textes. C'est généralement plus facile même si l'export ajoute pas mal de trucs inutiles pour ce qui t'intéresse. En tout cas ça bât le pdf :-).
Tu as ici toute une discussion sur le sujet.
https://www.access-programmers.co.uk...xt-file.66204/
As-tu regardé si les Mz-Tools ne permettaient pas cela (dans les outils Access sur ce site) ?
Aussi il y a http://rubberduckvba.com/Indentation qui permet de faire des choses assez avancées.
A+
Bonjour,
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Public Sub listSubFuncVBA(PathBase As String) Dim oAccess As New Access.Application Dim oDb As DAO.Database Dim strName As String, strLine As String Dim I As Integer, J As Integer oAccess.OpenCurrentDatabase (PathBase) Set oDb = oAccess.CurrentDb For I = 1 To Application.VBE.VBProjects(1).VBComponents.Count ' nom du Formulaire, du Report, du Module Debug.Print vbCrLf & I & " " & Application.VBE.VBProjects(1).VBComponents.Item(I).Name For J = 1 To Application.VBE.VBProjects(1).VBComponents.Item(I).CodeModule.CountOfLines strLine = Application.VBE.VBProjects(1).VBComponents.Item(I).CodeModule.Lines(J, 1) strName = left(strLine, 11) ' nom des procédures et fonctions If left(strName, 11) = "Public Func" Then Debug.Print " " & I & " " & strLine ElseIf left(strName, 11) = "Private Fun" Then Debug.Print " " & I & " " & strLine ElseIf left(strName, 11) = "Public Sub " Then Debug.Print " " & I & " " & strLine ElseIf left(strName, 11) = "Private Sub" Then Debug.Print " " & I & " " & strLine Else ' lignes des procédures et fonctions ' Debug.Print strLine End If Next J Next I Set oAccess = Nothing End Sub
Bonjour,
Pour lister les procédures
code de de Jean-Philippe André Redacteur/moderateur
http://www.developpez.net/forums/d67...s-base-access/
Bonjour à tous,
et merci pour les input
j'ai concaténé tout ça dans un base ci jointsPièce jointe 554310
on saisit le nom de la base, son chemin on clique et on obtient la liste des fonction et Sub par module
Pièce jointe 554314
Bonjour,
une contribution Excel adaptable pour Access :
https://www.developpez.net/forums/d1...lasseur-excel/