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 Access Discussion :

RUNMACRO : Executer une macro contenue dans une autre base access avec un argument en paramètre


Sujet :

Macros Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut RUNMACRO : Executer une macro contenue dans une autre base access avec un argument en paramètre
    Bonjour,
    Je cherche à executer du code VBA d'une base de donnée à une autre via RunMacro

    J'ai une base de donnée appelée "ExecuteMac.accdb" qui dans son code source VBA va faire appel à une autre base "BaseMac.accdb".
    La base "BaseMac" contient une macro qui execute une procédure vba.

    J'ai tout simplifié pour vous présenter uniquement ma problématique.

    La base de données "ExecuteMac.accdb" de lancement d'une macro contient un formulaire avec un bouton de commande dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Commande0_Click()
    Dim acApp As New Access.Application
     
    Set acApp = New Access.Application
     
    acApp.OpenCurrentDatabase ("C:\BaseMac.accdb")
     
    ' Exécuter la macro
    Call acApp.DoCmd.RunMacro("ma_macro")
     
    acApp.Quit
    Set acApp = Nothing
    End Sub
    La base de donnée "BaseMac" contenant la macro "ma_macro" execute la procédure "ouvremsg()" qui n'affiche qu'un message (!) dont le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function ouvremsg()
        MsgBox "Voici le message :" & vbCrLf & "Cela marche bien !", vbInformation
    End Function
    Cela fonctionne à merveille ! Mais (y a toujours un "mais" dans une histoire !) je souhaiterais pouvoir avoir un message dynamique dont le code serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function ouvremsg(Byval pstrMsgPrivee as String)
       MsgBox "Voici le message :" & vbCrLf & pstrMsgPrivee , vbInformation
    End Function
    Je n'arrive donc pas à modifier ma procédure d'appel pour obtenir le résultat voulu.
    Le code envisagé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call acApp.DoCmd.RunMacro("ma_macro", "Mon message privé a afficher")
    mais cela ne fonctionne pas lorsque je veux ajouter un paramètre (argument de la procédure appelé par la macro dans pour la procédure "ouvremsg").
    En bref, la variable "pstrMsgPrivee" est initialisée par la base de données "ExecuteMac" pour venir s'afficher dans la base "BaseMac" mais j'arrive pas à lui transemttre !

    Comment peut-on envoyer une chaine de caractère d'une base à une autre ? cette chaine est ensuite utilisée dans la base contenant la macro. Je suis preneur de toutes les solutions mais une contrainte majeur : il ne faut pas faire appel à des libraires autre que les 2 obligatoires d'Access. Ainsi j'avais eu l'idée de passé par un fichier texte qu'il me suffisait de lire mais j'ai besoin d'un objet de type FileSystemObject et donc cela ne me convient pas car ma base ne doit contenir aucune référence vba à ce stade de mon code.

    Dans l'attente de vous lire.
    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    Un moyen simple de passer des paramètres est d'ecrire un fichier qui sera lu par l'autre base.
    Si la 2eme base execute la macro puis se ferme, les paramètres peuvent être passés en ligne de commande

  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
    il doit y avoir un moyen avec les TempVars

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/07/2015, 15h14
  2. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  3. Changer un caractère dans une chaîne contenue dans une phrase
    Par cirtey dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/03/2007, 16h16
  4. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 18h46
  5. Comment insérer une macro excel dans une macro word?
    Par max2245 dans le forum VBA Word
    Réponses: 15
    Dernier message: 07/01/2006, 17h44

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