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 :

Exploration d'une Macro avec VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut Exploration d'une Macro avec VBA
    Bonjour à tous.

    J'ai une macro qui a plusieurs dizaines de lignes d'action et je voudrais pouvoir les lister ainsi que chacune des propriétés dans la fenêtre d'exécution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim obj As AccessObject, dbs As Object
        Set dbs = Application.CurrentProject
     
        For Each obj In dbs.AllMacros
                Debug.Print obj.XXX     ' Quelque chose.
            End If
        Next obj
    Mais le problème est qu'il n'y a pas grand chose à lister !

    Quelqu'un connait-il un moyen d'atteindre les infos que je veux ?

    Merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    La seule solution que j'ai trouvé pour explorer des macros avec VBA c'est de les exporter sous forme de fichier texte puis de lire ce fichier texte avec du code VBA.

    Ici un exemple de code qui fait l'export :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ExporterMacros() 
        Dim dbs As CurrentProject 
        Dim obj As Object 
     
        Set dbs = Application.CurrentProject 
        For Each obj In dbs.AllMacros 
            SaveAsText acMacro, obj.Name, "C:\temp\" & obj.Name & ".txt" 
        Next obj 
     
        set obj=nothing
        set dbs=nothing
     
    End Sub
    Inspiré de ici :

    http://www.ozgrid.com/forum/showthread.php?t=69335

    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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    Bonjour à tous.
    Et, merci pour cette réponse.

    J'ai trouver un autre moyen :
    1:Je convertis ma macro en code VBA.
    2:J'imprime ou je colle le code de ma macro.

    Voilà un échantillon de ce que ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ' Récupération des horaires clients complétés par les utilisateurs
        DoCmd.RunMacro "4-1-Horaire Clients", , ""
        ' Création de la ligne Adresse de facturation 01
        DoCmd.OpenQuery "Sélection Adresse Facturation 01 (BPADDRESS)", acViewNormal, acEdit
    Cdt

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    La question est : "Pourquoi ne pas utiliser du VBA directement ?"

    Personnellement c'est généralement la 1ère chose que je fais quand je reprend une application, je converti toutes les macros en code VBA.

    À part pour cretaines oppérations particulières où on est obligé d'utiliser les macros, je trouve VBA bien plus facile à vivre, surtout quand il faut faire du débuggage.

    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.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    C'est certain.

    L'ennui c'est que je travaille avec des collaborateurs qui eux ne maîtrisent pas le VBA.

    Je suis contraint de faire avec et de reprendre les longues macros et d'éplucher les requêtes une à une.

    A+

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    L'ennui c'est que je travaille avec des collaborateurs qui eux ne maîtrisent pas le VBA.
    Mes condoléances mais peut-être qu'une petite formation serait possible afin de les initier aux merveilles de la programmation :-).

    Pour l'analyse des requêtes, voici ce que j'utilise aussi :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MSysObjects.Name, MSysObjects.Type, Switch([Attribute]=0,"Début requête",[Attribute]=1,"Table destinatrice" & Chr(13) & Chr(10) & "[Name1]=Nom Table",[Attribute]=5,"Table source" & Chr(13) & Chr(10) & "[Name1]=Nom Table",[Attribute]=6,"Champ" & Chr(13) & Chr(10) & "[Name1]=Alias",[Attribute]=7,"Jointure",[Attribute]=8,"Critère",[Attribute]=11,"Tri",[Attribute]=255,"Fin requête") AS LibelleAttribut, MSysQueries.*
    FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId = MSysObjects.Id
    WHERE (((MSysObjects.Type)=5))
    ORDER BY MSysObjects.Name, MSysQueries.Attribute;

    C'est une requête qui te permets de voir les requêtes ... sous forme de requête :-). C'est assez pratique quand tu veux savoir quelle requête manipule une table donnée ou utilise un champ particulier.

    Ce n'est pas toujours super lisible mais on peut y faire des recherches textuelles.

    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.

Discussions similaires

  1. J'ai un soucis avec une macro en vba
    Par Nadounette123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/09/2013, 13h15
  2. {VBA Excel} Simplifier une macro avec une copie
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/06/2007, 14h38
  3. Insertion d'une date dans une table avec vba
    Par skeut dans le forum Access
    Réponses: 2
    Dernier message: 21/02/2006, 08h54
  4. Réaliser une macro en VBA pour excel afin de créer un graphe
    Par xavier le breuil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/12/2005, 14h41

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