IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Recensement des Procédures et fonctions VBA d'une base Access


Sujet :

VBA Access

  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut Recensement des Procédures et fonctions VBA d'une base Access
    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) ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 224
    Points : 544
    Points
    544
    Par défaut
    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.

    Nom : F_Save_Code.png
Affichages : 910
Taille : 23,6 Ko

    A+

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    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

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 224
    Points : 544
    Points
    544
    Par défaut
    Tu voudrais juste le nom sans le code.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    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+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    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+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Un travail qui plait est à moitié fait.

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 011
    Points : 2 078
    Points
    2 078
    Par défaut
    Bonjour,

    Pour lister les procédures
    code de de Jean-Philippe André Redacteur/moderateur
    http://www.developpez.net/forums/d67...s-base-access/

  10. #10
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour à tous,
    et merci pour les input

    j'ai concaténé tout ça dans un base ci jointsGetFnction.zip

    on saisit le nom de la base, son chemin on clique et on obtient la liste des fonction et Sub par module

    Nom : FonctionsEtSub.GIF
Affichages : 703
Taille : 138,5 Ko

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 261
    Points
    34 261
    Par défaut
    Bonjour,

    une contribution Excel adaptable pour Access :
    https://www.developpez.net/forums/d1...lasseur-excel/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Extraire le code vba d'une base Access
    Par zoom61 dans le forum Contribuez
    Réponses: 3
    Dernier message: 08/11/2019, 08h41
  2. Réponses: 0
    Dernier message: 10/07/2015, 11h44
  3. Enregister des données sur deux tables dans une base Access
    Par aziz-be dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 23/09/2012, 11h46
  4. [OL-2010] Importer des contact sur outlook venant d'une base access
    Par Marc31 dans le forum Outlook
    Réponses: 4
    Dernier message: 07/09/2011, 10h34
  5. Réponses: 3
    Dernier message: 22/09/2010, 22h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo