Appeler du code VBA à partir d’une macro
Comment peut-on appeler du code VBA à l’aide d’une macro Access ?
La fonction VBA
Tout d’abord, il faut que vous prévoyiez une fonction VBA, à l’intérieur d’un module standard. En voici un exemple :
1 2 3 |
Function AfficherMessage(ByVal strMessage As String) MsgBox strMessage, vbInformation End Function |
Cette fonction reçoit une chaîne en entrée, et se contente de l’afficher par MsgBox
. Pas grand chose de spectaculaire (ni de très utile !).
Function / End Function
), et non pas une procédure (un bloc Sub / End Sub
). Sinon, la macro ne fonctionnera pas !La macro
Reste à appeler cette fonction dans une macro.
- Créez une nouvelle macro.
- Choisissez l’action
ExécuterCode
. - Dans la zone « Nom de la fonction », tapez :
AfficherMessage("Hello")
Pas de=
au départ, ni de signe quelconque, en fait.
Et entre les parenthèses, écrivez la chaîne à afficher (puisque c’est ce qu’attend la fonction plus haut).
Voici ce que ça donne sous Access 2010 :
Dans notre exemple, nous avons appelé la macro AutoExec
. Elle va donc s’exécuter automatiquement à l’ouverture de la base. Fermez la base, puis rouvrez-la pour vérifier.
Et si la fonction VBA ne comporte pas de paramètre ?
Dans ce cas, vous devez quand même prévoir des parenthèses dans la macro. Vous taperiez, comme nom de fonction : AfficherMessage()
merci pour ce que vs faites pour nous apprenants
JeanPaulR > Le principe est le même. Les seules choses à changer, dans ce cas, sont les
Sub
de la procédureSendOLMail
, qu’il faut remplacer parFunction
. Une fois la procédure transformée en fonction, elle peut-être appelée par la méthode décrite dans cet article. Mais il y a sans doute plus simple que :SendOLMail
dans un module.Le plus simple étant :
SendOLMail
en l’état (Sub / End Sub
), dans un module.Evénement
.Sur clic
sur « Propriété événementielle ».SendOLMail
tel qu’expliqué dans l’article qui détailleSendOLMail
.Ça paraît plus long à expliquer comme ça, mais il y a quelques avantages à moyen terme :
Ouala !
Bonjour,
Mais quel code écrire dans function si l’on veut lancer votre procédure envoi d’Email par SendOLMail comme décrit dans votre post : ‘ENVOYER UN MAIL DEPUIS ACCESS, AVEC PIECES JOINTES. En fait le chainage complet pour lancer d’un bouton formulaire une macro « executercode » pour envoyer un mail avec votre code VBA.
J’attends votre réponse avec impatience et vous en remercie par avance.
Bonne soirée.