Procédure VBA : mail

La procédure VBA mail permet d'envoyer un email en passant par une solution d'emailing compatible avec toutes les adresses email, et cela sans faire appel à Outlook.

Cette fonction peut avoir un très large éventail d'utilisations, notamment celles d'envoyer des notifications par email ou des emails de masse.

Utilisation simple :

mail email, expéditeur, sujet, message, login, mot_de_passe


Utilisation avancée :

mail destinataire, expéditeur, sujet, message, utilisateur, mot_de_passe, nom_expediteur, CC, BCC

Exemple d'utilisation

Voici un premier exemple simple d'utilisation de mail (envoi d'une notification par email) :

Sub exemple()
   
    contenu = "Ma notification :<br><br>Date et heure : " & Now 'En HTML (<br> = saut de ligne)
   
    mail "destinataire@demo.com", "expediteur@demo.com", "Titre de mon email", contenu, "utilisateur", "mdp"

End Sub

Après avoir exécuté cette macro, l'email arrive directement dans la boîte aux lettres du destinataire :

envoi-email-excel-vba - mail

Il est donc possible grâce d'envoyer un email en une seule ligne grâce à mail.

Comment est-ce possible ?

L'originalité de cette solution est d'envoyer les emails par le biais d'un service professionnel d'emailing, généralement utilisé pour les newsletters, les emails transactionnels, les notifications, etc.

L'envoi des emails via un service d'emailing est un choix qui a été fait ici afin de pouvoir mettre à disposition une fonction mail unique, utilisable par tout le monde quelque soit votre adresse email.

L'utilisation d'un service d'emailing (plutôt que d'envoyer ces emails par SMTP via votre serveur email) a encore d'autres avantages :

  • Possibilité d'envoyer des emails quelque soit votre type d'adresse email
  • Ne nécessite pas d'entrer dans votre code VBA les très sensibles informations de connexion à votre boîte mail
  • Excellente déliverabilité des emails (peu de risque que ça finisse dans les spams)
  • Statistiques détaillées
  • Possibilité d'envoyer des emails en masse
  • Etc.

La bonne nouvelle est que le service d'emailing sélectionné pour la fonction mail est complètement gratuit jusqu'à 200 emails par jour (et cette offre n'est pas limitée dans le temps) !

Inscription au service d'emailing

1. Avant de pouvoir utiliser la fonction mail, vous devez commencer par vous inscrire au service d'emailing.

2. Rendez-vous ensuite sur la page "Serveur SMTP" pour récupérer le nom d'utilisateur et le mot de passe dont vous aurez besoin pour envoyer un email avec mail :

emailing excel smtp

3. Si l'adresse d'expéditeur que vous souhaitez utiliser avec mail n'est pas celle de votre compte, ajoutez-la dans votre liste d'expéditeurs autorisés :

ajout expediteur

Envoyer un premier email de test

Pour vérifier que tout a bien fonctionné, vous pouvez maintenant vous envoyer un premier email de test en remplaçant les données en majuscules par les vôtres :

Sub exemple()

    mail "EMAIL_DESTINATAIRE", "EMAIL_EXPEDITEUR", "Titre", "Message", "UTILISATEUR", "MOT_DE_PASSE"

End Sub

Ce qui donne par exemple :

Sub exemple()

    mail "exemple@exemple.com", "exemple@exemple.com", "Titre", "Message", "n6b3i3x1knym4ir98aa96k368h4sq5", "0i10n9542mwht437nshdvn1a2fg8g0"

End Sub

Exécutez ensuite simplement votre macro et vérifiez votre boîte mail.

Format du contenu = HTML

Pour appliquer une mise en forme au contenu de l'email, l'utilisation de balises HTML est nécessaire.

Si vous ne connaissez rien au HTML ou si vous ne souhaitez pas appliquer de mise en forme particulière, retenez juste ceci : entrez votre texte normalement et utilisez simplement la balise <br> pour ajouter un saut de ligne. Par exemple :

contenu = "Ma notification :<br><br>Date et heure : " & Now '2x <br> = 2 sauts de ligne

Si vous avez quelques bases en HTML, n'hésitez pas à mettre en forme votre email, ajouter des liens, des images distantes, etc. Notez que le contenu de votre email sera automatiquement placé entre les balises body.

Un exemple simple en HTML :

Sub exemple()

    contenu = "<h1>Mon super titre</h1><p>Mon incroyable phrase d'exemple ...</p><p>Bla bla bla ...</p>"

    mail "destinataire@demo.com", "expediteur@demo.com", "Un email passionnant", contenu, "n6b3i3x1knym4ir98aa96k368h4sq5", "0i10n9542mwht437nshdvn1a2fg8g0", "Mon nom ici"

End Sub

Aperçu du résultat :

envoi-email-excel-vba-html - mail

Insérer une plage de cellules en HTML

Cet add-in dispose déjà de fonctions permettant de convertir une plage de cellules en HTML, il s'agit des fonctions TABLEAU_HTML et TABLEAU_HTML_AVANCE (la seconde permet de conserver les principales mises en forme des cellules).

Par exemple :

Sub exemple()

    contenu = "<h1>Mon super tableau</h1>" & TABLEAU_HTML_AVANCE(Range("A1:C12"))

    mail "destinataire@demo.com", "expediteur@demo.com", "Plage de cellules", contenu, "n6b3i3x1knym4ir98aa96k368h4sq5", "0i10n9542mwht437nshdvn1a2fg8g0", "M. Tableau"

End Sub

Aperçu du résultat :

email-excel-vba-tableau-html - mail

Remarque : cette fonction nécessite l'installation du pack de fonctions XLP (un add-in gratuit pour Excel qui ajoute 81 nouvelles fonctions).