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

Macros et VBA Excel Discussion :

[VBA-E][Access] Exécuter un module Access dans Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut [VBA-E][Access] Exécuter un module Access dans Excel
    Bonjour à tous,

    Je débute en programmation VBA et je suis confronté à un problème que je ne parviens pas à résoudre malgré moult recherches.
    J'ai défini une macro dans un fichier Excel qui doit appeler un morceau de code contenu dans unn module d'un fichier Access. Dans la macro Excel, j'arrive à récupérer la liste des modules de mon fichier Access, mais je ne sais pas comment exécuter le code VBA de ces modules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.Run "ModuleMiseAJour"
    J'ai essayé Run mais ça me répond "Microsof Access ne peut pas trouver la procédure ModuleMiseAJour" au lancement de la macro Excel. Comment faire ?
    Est-il possible d'écrire soi-même le code VBA des macros Access comme on peut le faire pour les macros Excel (pour l'instant j'ai peut-être raté quelque chose mais quand je créé une macro dans Access et que je lui demande de la traduire en VBA il met la version "codée" dans Module) ?

    Config : Windows 2000 / Excel 2000 / Access 2000.

    Merci.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Mets-nous un peu plus de code, comme par exemple tes déclarations de l'appli Access dans Excel de la base et son ouverture.

    A+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Avec Run tu ne peux lancer un module, mais une procedure qui se trouve dans le module, et en faisant préceder le nom du module par le nom du projet, tu as donc access, va voir l'aide en tapant "Run"

    Starec

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Merci pour vos réponses.

    Voici le code de ma macro Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim db As Access.Application
        Set db = New Access.Application
        db.OpenCurrentDatabase "C:\Mes Documents\bd1.mdb"
        DoCmd.RunMacro "Macro1"
    En fait j'ai contourné le problème en créant une macro Access (Macro1) qui appelle la fameuse procédure du Module qui m'intéresse. Et ça marche.

    Mais la solution est pas super, en fait il faudrait remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunMacro "Macro1"
    par un appel direct à la procédure, cela me permettrait de passer des arguments à cette procédure à partir de la macro Excel.

    La procédure s'appelle "MiseAJour" et le module qui la contient "ModuleMiseAJour" (pas très original mais bon...).

    Merci.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim db As Access.Application 
        Set db = New Access.Application 
        db.OpenCurrentDatabase "C:\Mes Documents\bd1.mdb" 
        With db
              .DoCmd.RunMacro "Macro1"
        End with
    Juste pour l'idée, je ne connais pas l'utilisation de DoCmd

    A+

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par ouskel'n'or
    As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim db As Access.Application 
        Set db = New Access.Application 
        db.OpenCurrentDatabase "C:\Mes Documents\bd1.mdb" 
        With db
              .DoCmd.RunMacro "Macro1"
        End with
    Juste pour l'idée, je ne connais pas l'utilisation de DoCmd

    A+

    C'est étrange je viens de tester ton idée et db.DoCmd.RunMacro "Macro1" fait exactement la même chose que DoCmd.RunMacro "Macro1".

    Mais pour le lancement de la macro c'est bon ça marche, c'est le lancement d'une procédure d'un module qui ne marche pas.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je suis pas spécialiste Access donc je connais pas toutes les subtilités.
    Quand on est dans Access, dans les objets il y a une catégorie "Macros" et une catégorie "Modules". J'ai compris (peut-être que je me trompe) que les Macros correspondent à une suite d'actions que Access réalise alors que les Modules contiennent un ensemble de procédures (ce qui se rapproche plus à de la programmation classique). Et mon code VBA du fichier Access se trouve dans un Module car je n'ai pas trouvé le moyen d'éditer le code des Macros, comme on peut le faire dans Excel.
    A partir du script VBA de mon fichier Excel j'arrive à lancer les Macros, mais je n'ai rien trouvé pour lancer les procédures des Modules.
    Donc en fait ce qu'il faudrait c'est soit être capable d'éditer le code VBA des Macros de Access, soit parvenir à lancer une procédure d'un module Access à partir du script VBA du fichier Excel.

    Merci.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok, je comprends ton dilemme. Les modules contiennent les macros. Déclarées en "Private Sub ..." elle ne sont accessibles que depuis le même module (sauf à nommer le nom du module - ce que je n'ai jamais fait mais dont je me doute)
    Les autres "sub" ou macros dont le nom n'est pas précédé de Private sont utilisables depuis tout le projet.
    Si tu utilises un Userform (faisant partie du projet), dans le code de l'userform, tu as également des "private sub" correspondant à chaque contrôle. Elles ne sont accessibles que depuis l'userform.
    Mais depuis l'userform, tu peux appeler une sub, non précédées de Private, se trouvant dans un module extérieur (Module1, Module2... etc)
    (Pour simplifier, tu peux renommer les modules auquel cas mon exemple précédent ne veut plus rien dire )
    T'en fais pas, ça va venir plus vite que tu ne crois...

    Bon courage

    NB - Je sais que j'ai écourté mais commence par là

  9. #9
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je te remercie de t'être penché sur mon problème de façon aussi attentive.

    Je suis pas sûr d'avoir tout bien compris de ton dernier message mais tu m'as mis indirectement sur la voie. En fait dans mon Module, mon bout de code était déclaré comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function MiseAJour()
    J'ai juste remplacé par :
    et maintenant ça marche, en utilisant la méthode Run dans ma macro Excel la procédure se lance bien.
    Merci beaucoup
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

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

Discussions similaires

  1. Saut de ligne Access traduit par un carre dans excel
    Par youcefny dans le forum Access
    Réponses: 1
    Dernier message: 17/07/2008, 22h07
  2. Comparer deux tables Access et afficher le resultat dans excel
    Par h_adil dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/06/2008, 18h57
  3. Comment exécuter un module Access
    Par sousae dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/10/2007, 14h52
  4. [VBA-E]Changer propriété auteur du fichier dans excel
    Par JulienCEA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/03/2006, 13h15
  5. [VBA-E]Existe un evenement after update dans Excel
    Par David1974 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/02/2006, 16h35

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