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