VBA se prête merveilleusement bien à l’automatisation de certains processus de travail dans le monde Microsoft Office et permet ainsi de se débarrasser de tâches quotidiennes stupides et de clics inutiles. On peut par exemple programmer une macro qui répond automatiquement à un e-mail avec un texte déterminé. Pour s’épargner d’autres clics, on peut positionner le curseur à un endroit précis de l’e-mail, de sorte que l’on puisse continuer à écrire à cet endroit, par exemple parce que l’on souhaite insérer une formule de politesse individuelle.
Ainsi, le texte de réponse automatique pourrait par exemple contenir une formule de politesse avec un espace réservé :
“Bonjour …, […]”.
où, pour “…”, un nom individuel doit alors être saisi, par exemple.
Utiliser la fonction SendKeys
Pour ce faire, on peut utiliser la fonction SendKeys dans le code VBA.
Sub ReplyMSG()
Dim olItem As Outlook.MailItem
Dim olReply As MailItem ' Reply
Set olReply = olItem.Reply
olReply.Display
SendKeys "{Right}{Right}{Right}{Right}{Right}{Right}{Right}", True
Fin Sub
Dans l’exemple de code ci-dessus, un e-mail de réponse est généré et affiché avec la fonction “Display”. Ceci est important, car la fonction SendKeys fonctionne comme si l’on effectuait une saisie à la souris ou au clavier, à la seule différence que les différentes saisies au clavier ou à la souris sont transmises par code.
L’appel Display permet d’afficher le courrier de réponse et le curseur se trouve automatiquement au début du texte. C’est pourquoi, dans notre exemple, on passe 8 fois le paramètre {Right} pour déplacer le curseur de 8 positions vers la droite. {RIGHT}
représente la touche fléchée vers la droite (NACH-RECHTS) du clavier. Le curseur est ainsi positionné juste avant le “…”, de sorte que l’on peut immédiatement taper le nom ou la formule de politesse.
Avec SendKeys, on peut réaliser toutes sortes de raccourcis clavier. On peut par exemple déclencher la touche F1 avec {F1}
ou simuler la touche Entrée/Retour avec {ENTER}
et provoquer ainsi un retour à la ligne dans l’e-mail.
Le deuxième paramètre de type bool qui peut être passé à la fonction SendKeys est le paramètre optionnel [wait]. Dans notre exemple, ce paramètre n’est pas pertinent et pourrait être omis. Cependant, si un autre code suit SendKeys, le paramètre peut être important. En effet, le paramètre [wait] = true détermine s’il faut attendre que SendKeys ait exécuté toutes les commandes du clavier avant d’exécuter le code suivant. Si [wait] = false, ce qui correspond à la valeur par défaut, le code suivant sera exécuté immédiatement dans la fonction ou la procédure sans attendre que toutes les commandes clavier aient été exécutées. Dans certaines circonstances, cela peut entraîner des effets inesthétiques, mais cela dépend du code VBA en question.