Le partage et la diffusion des reportings est un travail qui peut prendre du temps. C’est notamment vrai lorsque la liste de diffusion est importante ou qu’il faut personnaliser les échanges en fonction des destinataires. Peut-être avez-vous un classeur contenant des données que vous souhaitez partager avec votre équipe, ou peut-être souhaitez-vous exporter vos données dans un fichier CSV/PDF et les envoyer.
La bonne nouvelle c’est que VBA étant un langage de développement interne à la suite Office, on peut utiliser les fonctionnalités de l’ensemble des outils de la gamme. On peut donc envoyer un e-mail avec Outlook en partant d’Excel le tout grâce à une macro VBA. La très bonne nouvelle c’est que dans cet article je vous explique en 4 étapes simples et rapides comment le faire !
Pourquoi envoyer un e-mail avec une macro vba dans Excel ?
On s’intéresse à ce sujet généralement quand nous devons diffuser largement des fichiers qui seront personnalisés en fonction des destinataires. C’est le cas quand nous diffusons un reporting avec des colonnes masquées pour certains acteurs. C’est également le cas lorsque nous voulons diffuser des factures à des clients. Il est possible de créer un classeur Excel dans lequel les factures se rempliront et s’enverront grâce à une simple base de données. Magique non ? 🧙♂️
Comment envoyer un e-mail avec une macro vba dans Excel ?
En plus de vous communiquer au travers des prochaines étapes, les moyens pour créer une macro VBA dans Excel permettant d’envoyer des e-mails, je vais vous expliquer les notions de base du code VBA. Je vous invite à bien suivre l’article afin que vous puissiez adapter en toute conscience le code.
Etape 1 – Initialiser la macro et activer la bibliothèque
Rendez-vous dans le Visual Basic Editor en cliquant sur Alt+F11
ou en vous rendant directement dans l’onglet Développeur puis Visual Basic. Si vous n’avez pas afficher l’onglet Développeur dans votre ruban, je vous donne la réponse ici.
Créez un nouveau module pour y stocker votre macro VBA destinée à héberger votre code qui se chargera de l’envoi des e-mails via Excel. Pour cela, faites un clic droit sur Module puis Insertion et enfin Module. Le Module1 vient de se créer.
Vous pouvez à présent cliquer sur le Module1. Avant de saisir du code, nous allons activer une bibliothèque essentielle. Cliquez sur Outils puis Références. Cherchez et sélectionnez Microsoft Outlook 16.0 Object Library.
A présent, vous pouvez saisir le code suivant dans votre module. Une macro commence toujours par Sub nom_de_la_macro()
et se termine par End Sub
.
Sub Envoyer_un_mail()
'Macro permettant l'envoi de mail
[Code Etape 2]
[Code Etape 3]
[Code Etape 4]
End Sub
Etape 2 – Créer les variables
En développement informatique une variable est un identifiant auquel on attribue une valeur. Pour certaines valeurs, il n’est pas nécessaire de préciser le type de valeur que l’on mettra. Par exemple, si je veux attribuer à l’identifiant mail
la valeur "mail1@mail.com"
, je n’ai pas besoin de préciser à Excel que ma valeur est du texte. Il s’en rendra compte tout seul. Attention cependant, je vous déconseille d’attribuer à une variable tantôt un format texte tantôt un format nombre. Vous risquez de vous exposer à des incompréhensions de la part d’Excel.
Dans notre cas d’envoi d’un e-mail grâce à la macro Excel, nous allons faire appel à des fonctionnalités contenue dans notre bibliothèque fraichement activée. Il va nous falloir être précis sur les fonctionnalités que nous appelons afin qu’Excel comprenne nos variables. Nous allons appeler 2 fonctionnalités : Outlook.Application
et Outlook.MailItem
.
Pour définir une variable dans une macro Excel, nous tapons Dim
+ nom que nous donnons à la variable
+ As
+ type de la variable
.
Les variables faisant référence à des objets doivent être définies en utilisant la synthaxe Set
+ nom que nous donnons à la variable
+ =
+ objet
.
Dim outlook As Outlook.Application
Dim email as Outlook.MailItem
Set mail = outlook.CreateItem(olMailItem)
Etape 3 – Définir les variables
A présent, nous allons pouvoir saisir les valeurs des variables et les intégrer directement dans notre objet mail
. En VBA, si on veut neutraliser une ligne sans pour autant l’effacer, il suffit de mettre une apostrophe juste devant. Les commentaires et code écrits derrière une apostrophe ne sont pas lus par les macros.
Nous pouvons adapter le code ci-dessous à nos propres besoins afin que la macro Excel puisse envoyer l’e-mail que nous voulons à la bonne personne.
La première ligne est la ligne des destinataires. Si vous avez plusieurs destinataires à saisir, il suffit de les séparer par des virgules (mail.To = "mail1@mail.com,mail2@mail.com,mail3@mail.com"
). La seconde et troisième ligne sont respectivement les lignes destinées aux personnes en copie ainsi qu’aux personnes en copie cachée.
Les quatrième et cinquième lignes sont destinées à alimenter l’objet de l’e-mail et le message de l’e-mail.
Les 2 dernières lignes servent à ajouter le présent fichier en tant que pièce jointe. Si vous souhaitez joindre un autre fichier, changez le code de la façon suivante : fichier = "C:\chemin\vers\mon\fichier.xlsx"
.
mail.To = "mail1@mail.com"
mail.CC = "mail2@mail.com"
mail.BCC = "mail3@mail.com"
mail.Subject = "Objet du mail"
mail.HTMLBody = "Message du mail"
fichier = ThisWorkbook.FullName
mail.Attachments.Add fichier
Etape 4 – Envoyer l’e-mail
Vous avez créé votre macro, initialisé les variables et les avez défini. Votre e-mail est prêt. Que vous manque-t-il ? La commande pour l’envoyer. La dernière étape de votre macro afin que vous puissiez envoyer un e-mail est la commande mail.Send
.
mail.Send
Je ne vous sens pas rassuré(e). Si vous avez peur du résultat. Placez juste avant mail.Display
. Vous pourrez avoir l’aperçu de l’e-mail avant qu’il aille nourrir la boite de réception de vos collègues ou de votre chef. Pour lancer votre macro, cliquez simplement sur le petit bouton d’exécution.
Votre e-email est parti ! Félicitations.
Conclusion
Bravo ! Vous l’avez fait. Vous avez envoyé votre premier e-mail grâce à une macro contenue dans Excel. Un nouvel univers s’ouvre à vous. Vous pouvez maintenant vous pencher sur l’envoi de plusieurs centaines de fichiers totalement en automatique. Il est possible de créer des listes de diffusion dans un onglet et d’envoyer à chaque destinataire de chaque ligne un e-mail personnalisé et un fichier joint.
Quelles sont les prochaines étapes ? Venez me le dire en commentaire.