Procédure VBA : mail

La procédure VBA mail permet d'envoyer un email (sans faire appel à Outlook) en passant par la boîte mail de votre choix (Gmail dans cet exemple).

Elle peut avoir un large éventail d'utilisations, notamment celles d'envoyer des notifications par email ou d'envoyer un tableau correpondant à une plage de cellules du classeur Excel.

Prérequis : version 2.2.0 du pack de fonctions (ou une version plus récente)

Utilisation simple :

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

Utilisation avancée :

mail destinataire, expéditeur, sujet, message, utilisateur, mot_de_passe, serveur_smtp, serveur_port, 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@exemple.com", "expediteur@gmail.com", "Titre de mon email", contenu, "expediteur@gmail.com", "MOT_DE_PASSE", "smtp.gmail.com"

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.

Si vous souhaitez passer par Gmail, vous devez préalablement autoriser l'accès aux applications moins sécurisées pour pouvoir envoyer des emails depuis Excel.

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@exemple.com", "expediteur@gmail.com", "Un email passionnant", contenu, "expediteur@gmail.com", "MOT_DE_PASSE", "smtp.gmail.com", , "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@exemple.com", "expediteur@gmail.com", "Plage de cellules", contenu, "expediteur@gmail.com", "MOT_DE_PASSE", "smtp.gmail.com", , "M. Tableau"

End Sub

Aperçu du résultat :

email excel vba tableau html png mail

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