VBA: Envoyer un email avec Excel (via Outlook)


Vous avez un listing de clients en Excel et vous voulez l'utiliser pour envoyer des emails personnalisés? Vous avez besoin d'avertir quelqu'un par email à la fin de votre programme? Alors lisez ce qui suit car en VBA, tout est possible (ou presque)!

Je vous propose ici le code VBA qui vous permettra d'envoyer un email avec Excel en passant (en arrière plan et sans l'intervention humaine) par Outlook. Il s'agit une fonctionnalité très pratique. Le code qui suit est conçu de manière à ce que même un débutant en VBA puisse l'implementer et l'utiliser facilement.

Les utilisateurs  plus avancées de VBA n'auront aucun problème d'insérer ce code dans une boucle et créer ainsi un puissant outil de publipostage – qui, de plus est, contrairement à d'autres outils, tout à fait gratuit.

Comment envoyer un email dans Excel (Access / Word,…) avec VBA?

Le code VBA qui suit vous permet donc d'envoyer un ou plusieurs emails à partir d'Excel. Ce code contient deux procédures. Une qui envoie les emails proprement dit (procédure EnvoyerEmail) et une autre qui gère l'application Outlook (pour faire en sorte que Outlook soit prêt à envoyer les emails – même si Outlook lui même n'est pas ouvert) – procédure PreparerOutlook.

Le code est écrit de manière à ce qu'il soit lisible et compréhensible. En gros, vous devez fournir à la procédure EnvoyerEmail les arguments suivants (sous forme de texte):

  • le sujet de l'email
  • le contenu de l'email
  • l'adresse email du destinataire
  • en option, le chemin complet du fichier qui doit être attaché à l'email en tant que pièce jointe

Le code va fonctionner directement, il suffit de le copier/coller. La seule exigence est d'avoir Microsoft Outlook installé et ajouter à votre projet la Référence à Outlook (voir la section suivante).

Il vous est donc très facile d'ajouter ce code à votre Projet et commencer à envoyer des emails.

Ajouter la Référence Microsoft Outlook X.0 Object Library

Ceci est une étape importante car si la Référence n'est pas ajouté, le code ci-dessous ne fonctionner pas.

Si vous connaissez la procédure d'ajout d'une Référence VBA
Si vous ne savez pas comment ajouter une Référence VBA

 

Code VBA complet pour envoyer des emails dans Excel

Ci-dessous se trouve donc le code VBA complet dont vous aurez besoin. Il suffit de le copier/coller dans un Module.

 

Pour que le code fonctionne correctement, vous devez copier/coller son entièreté dans un Module de votre Projet VBA.

Choix du format de l'email: texte ou HTML

Ce code VBA vous permet de choisir quel format de l'email vous voulez utiliser: texte ou HTML (formatage comme une page web). Selon votre choix, vous devez mettre en commentaire une de ces deux possibilités.

 

Pour le format texte, vous pouvez laisser le code initial inchangé (lignes 32 et 33 actives, lignes 38 et 39 en commentaire).

Pour le format HTML, faites le contraire – mettez les lignes 32 et 33 en commentaire et rendez les lignes 38 et 39 actives.

Quelle est la différence? En gros, le format HTML vous permet d'utiliser les balises & le code HTML pour formater le contenu de votre email.

Vous pouvez voir la différence entre ces deux formats dans la section suivante – les exemples d'utilisation.

Exemples d'utilisation du code VBA pour envoyer les emails depuis Excel

Et voici les exemples de l'utilisation du code précédent. Il suffit d'appeler la procédure EnvoyerEmail avec les arguments nécessaires – c'est à dire "Sujet", "Destinataire", "Contenu" et éventuellement "Pièce jointe".

Le code qui suit envoie un email sans pièce jointe et un autre avec une pièce jointe.

Exemple d'utilisation avec des variables

Vous pouvez également fournir les arguments nécessaires via des variables. Attention, vous devez avoir déclaré ces variables pour pouvoir les transférer une procédure (Sub) à une autre (ici de la procédure TestEnvoiEmail_Variables vers EnoyerEmail). Ceci est particulièrement pratique si vous voulez envoyer plusieurs emails. Il suffit alors d'utiliser une boucle au sein de laquelle on attribue les valeurs aux variables et ensuite, l'email est envoyé. La boucle recommence une autre itération en chargeant les nouvelles valeurs dans les variables. Et ainsi de suite…

 

 

Exemple de code pour envoyer en email en format HTML

Comme mentionné plus haut, vous pouvez créer et envoyer des emails en format HTML. Ainsi, Outlook envoie l'email comme si c'était une page web. Cela a pour l'avantage la possibilité de formater le message à votre guise. A condition de maîtriser (au moins) un peu le langage HTML (remarquez les balises HTML dans l'exemple).

 

Remarques

  • Ce code est indépendant et peut être utilisé dans les différentes application de Microsoft Office (Excel, Access, Word,…). Mais n'oubliez pas d'ajouter la Référence à Microsoft Outlook X.0 Object Library comme mentionné plus haut.
  • Il est possible d'aller encore plus en profondeur: ajouter des CC, des CCI, ajouter plusieurs pièces jointes en même temps etc. Par souci de lisibilité (surtout pour les utilisateurs moins avancés), j'ai utilisé dans ce code les options de base (et nécessaires). N'hésitez pas à laisser un commentaire si vous avez envie d'en savoir plus sur les autres fonctionnalités possibles…
  • Selon vos besoins, vous pouvez envoyer directement le mail ou le garder prêt et l'envoyer manuellement. L'explication comment faire se trouve dans les commentaires dans le code.

4 0



Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.