Envoyer un e-mail, Excel VBA
Voici une explication détaillée et un exemple de code pour envoyer un e-mail depuis Excel en utilisant VBA.
Objectif :
Nous allons utiliser VBA (Visual Basic for Applications) dans Excel pour envoyer des e-mails automatiquement via Outlook. Ce processus est utile pour automatiser l’envoi de rapports ou de notifications directement depuis Excel.
Prérequis :
1. Configuration d’Outlook : Assurez-vous que Microsoft Outlook est installé et configuré sur votre système. Ce code utilise Outlook pour envoyer des e-mails.
2. Paramètres de sécurité : Assurez-vous que les macros sont activées dans Excel. Vous devrez peut-être ajuster les paramètres de sécurité pour autoriser l’exécution des macros.
Guide étape par étape :
1. Activer la référence à Outlook dans VBA :
Avant d’écrire le code, assurez-vous d’ajouter la référence à Outlook dans votre environnement VBA. Cela permet à Excel VBA d’interagir avec Outlook.
- Ouvrez Excel.
- Appuyez sur ALT + F11 pour ouvrir l’éditeur VBA.
- Cliquez sur Outils dans le menu puis sélectionnez Références.
- Dans la fenêtre qui s’ouvre, cherchez Microsoft Outlook XX.0 Object Library (XX correspond à la version, par exemple 16.0 pour Office 2016).
- Cochez la case à côté de cette référence pour l’activer.
- Cliquez sur OK pour confirmer.
2. Écrire le code VBA pour envoyer un e-mail :
Voici le code qui permet d’envoyer un e-mail en utilisant Outlook depuis Excel, avec plusieurs paramètres personnalisables comme le sujet, le corps du message, le destinataire, et les pièces jointes.
Sub SendEmail() Dim OutlookApp As Object Dim OutlookMail As Object Dim EmailSubject As String Dim EmailBody As String Dim EmailTo As String Dim EmailCC As String Dim EmailBCC As String Dim AttachmentPath As String ' Créer une nouvelle instance de l'application Outlook Set OutlookApp = CreateObject("Outlook.Application") ' Créer un nouvel élément de mail (e-mail) Set OutlookMail = OutlookApp.CreateItem(0) ' 0 représente un élément de type Mail ' Définir les paramètres de l'e-mail EmailSubject = "Votre sujet ici" EmailBody = "Bonjour," & vbCrLf & vbCrLf & _ "Ceci est un e-mail automatisé envoyé depuis Excel." & vbCrLf & _ "Veuillez trouver ci-dessous les détails." & vbCrLf & _ "Cordialement," & vbCrLf & _ "Votre nom" EmailTo = "destinataire@example.com" ' Ajouter l'adresse e-mail du destinataire EmailCC = "" ' Adresse e-mail en copie (optionnelle) EmailBCC = "" ' Adresse e-mail en copie cachée (optionnelle) AttachmentPath = "C:\chemin\vers\votre\pièce_jointe.xlsx" ' Pièce jointe (optionnelle) ' Composer l'e-mail With OutlookMail .Subject = EmailSubject .Body = EmailBody .To = EmailTo ' Adresse e-mail du destinataire .CC = EmailCC ' Adresse e-mail en copie .BCC = EmailBCC ' Adresse e-mail en copie cachée ' Joindre un fichier (si nécessaire) If Len(AttachmentPath) > 0 Then .Attachments.Add AttachmentPath End If ' Envoyer l'e-mail .Send End With ' Libérer les objets Set OutlookMail = Nothing Set OutlookApp = Nothing MsgBox "L'e-mail a été envoyé avec succès !", vbInformation End Sub
Explication du Code :
1. Déclaration des objets :
- OutlookApp : Un objet pour contenir l’instance de l’application Outlook.
- OutlookMail : Un objet pour représenter l’e-mail que nous sommes en train de créer.
- EmailSubject, EmailBody, EmailTo, etc. : Ces variables contiendront les détails de l’e-mail comme le sujet, le corps du texte, l’adresse du destinataire, etc.
2. Création de l’instance de l’application Outlook :
Set OutlookApp = CreateObject("Outlook.Application")
: Cette ligne crée une instance d’Outlook avec laquelle nous allons interagir.
3. Création d’un élément de mail :
Set OutlookMail = OutlookApp.CreateItem(0)
: Cela crée un nouvel élément de type e-mail dans Outlook. Le paramètre 0 représente un mail standard.
4. Définition des paramètres de l’e-mail :
- Les lignes suivantes attribuent des valeurs aux propriétés comme le sujet, le texte du corps du message, les adresses des destinataires, etc.
- EmailTo est l’adresse e-mail du destinataire.
- EmailCC est optionnel pour envoyer une copie de l’e-mail à d’autres personnes.
- EmailBCC est optionnel pour envoyer une copie cachée.
- AttachmentPath contient le chemin d’un fichier que vous souhaitez joindre à l’e-mail. Si vous n’avez pas de pièce jointe, vous pouvez laisser cette variable vide (« »).
5. Composer l’e-mail :
- Dans le bloc With OutlookMail, nous spécifions tous les détails de l’e-mail (sujet, corps, destinataire, etc.). La méthode .Send envoie l’e-mail.
6. Libération des objets :
Set OutlookMail = Nothing
etSet OutlookApp = Nothing
libèrent les objets Outlook après l’envoi de l’e-mail.
7. Confirmation :
MsgBox "L'e-mail a été envoyé avec succès !"
: Une fenêtre contextuelle s’affiche pour confirmer que l’e-mail a bien été envoyé.
Personnalisations optionnelles :
-
- Ajouter plusieurs destinataires : Vous pouvez ajouter plusieurs adresses en les séparant par un point-virgule :
EmailTo = "destinataire1@example.com; destinataire2@example.com"
-
- Formatage du corps de l’e-mail (HTML) : Si vous souhaitez envoyer un e-mail en HTML avec du texte en gras, en italique, des couleurs, etc., vous pouvez utiliser la propriété .HTMLBody au lieu de .Body :
.HTMLBody = "Ceci est un texte en gras
Ceci est un texte en italique"
-
- Ajouter plusieurs pièces jointes : Si vous avez plusieurs fichiers à joindre, vous pouvez ajouter plus de lignes .Attachments.Add :
.Attachments.Add "C:\chemin\vers\fichier1.xlsx" .Attachments.Add "C:\chemin\vers\fichier2.xlsx"
Remarques finales :
- Avertissement de sécurité : Si vous exécutez ce script dans un environnement sécurisé ou avec un logiciel antivirus actif, certains paramètres de sécurité peuvent bloquer l’envoi automatique d’e-mails. Assurez-vous de vérifier ces paramètres si vous rencontrez des erreurs.
- Configuration d’Outlook : Cette méthode suppose qu’Outlook est installé et configuré sur la machine exécutant le script VBA. Si vous utilisez un autre client de messagerie (comme Gmail), il vous faudra une approche différente.
Ce code VBA vous aidera à automatiser l’envoi d’e-mails depuis Excel, facilitant ainsi des tâches répétitives et améliorant l’efficacité de votre travail.