Voici un exemple détaillé de code VBA pour automatiser l’envoi d’e-mails via Outlook directement depuis Excel. Ce code utilise l’intégration de Microsoft Outlook avec VBA dans Excel. Vous pouvez l’adapter selon vos besoins spécifiques.
Pré-requis :
- Avoir Outlook installé sur votre machine et configuré.
- Activer la référence « Microsoft Outlook xx.x Object Library » dans l’éditeur VBA (allez dans Outils > Références et cochez cette bibliothèque).
Exemple de Code VBA pour l’envoi d’e-mails automatisé via Outlook :
- Ouvrez l’éditeur VBA dans Excel en appuyant sur Alt + F11.
- Ajoutez un module en cliquant sur Insertion > Module.
- Copiez et collez le code suivant dans le module.
Code VBA :
Sub EnvoyerEmailAutomatique()
' Déclaration des variables
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim destinataire As String
Dim sujet As String
Dim corps As String
Dim fichierPJ As String
' Initialisation des variables
destinataire = "destinataire@example.com" ' Adresse du destinataire
sujet = "Sujet de l'email" ' Sujet de l'email
corps = "Bonjour," & vbCrLf & vbCrLf & "Ceci est un email envoyé automatiquement depuis Excel avec VBA." & vbCrLf & "Cordialement," & vbCrLf & "Votre Nom" ' Corps du message
fichierPJ = "C:\chemin\vers\le\fichier\attachement.pdf" ' Chemin d'un fichier à joindre (facultatif)
' Créer une instance d'Outlook
On Error Resume Next ' Si Outlook est déjà ouvert, ne pas afficher d'erreur
Set OutlookApp = CreateObject("Outlook.Application")
On Error GoTo 0 ' Retour à la gestion des erreurs classique
' Si Outlook n'est pas ouvert, afficher un message d'erreur
If OutlookApp Is Nothing Then
MsgBox "Outlook n'est pas ouvert ou installé.", vbCritical
Exit Sub
End If
' Créer un nouvel email
Set OutlookMail = OutlookApp.CreateItem(0) ' 0 = e-mail
' Configuration de l'e-mail
With OutlookMail
.To = destinataire ' Destinataire
.Subject = sujet ' Sujet
.Body = corps ' Corps du message
.Attachments.Add fichierPJ ' Ajouter un fichier joint (si nécessaire)
' Envoyer l'email
.Send
End With
' Message de confirmation
MsgBox "L'email a été envoyé avec succès!", vbInformation
End Sub
Explication du code :
- Déclaration des variables :
- OutlookApp : Une instance de l’application Outlook.
- OutlookMail : Un objet représentant un e-mail.
- destinataire : L’adresse email du destinataire.
- sujet : Le sujet de l’email.
- corps : Le corps du message dans l’email.
- fichierPJ : Le chemin d’un fichier à joindre à l’email (facultatif).
- Initialisation des variables :
- L’adresse du destinataire, le sujet et le corps du message sont définis ici.
- Le chemin du fichier joint (fichierPJ) peut être laissé vide si vous ne souhaitez pas joindre de fichier.
- Création de l’application Outlook :
- CreateObject(« Outlook.Application ») permet de créer une instance d’Outlook.
- Si Outlook n’est pas installé ou ouvert, le programme gère l’erreur et affiche un message d’alerte.
- Création d’un e-mail :
- La méthode CreateItem(0) crée un nouvel e-mail (0 correspond à un e-mail, 1 serait pour un rendez-vous, etc.).
- Le destinataire, le sujet et le corps du message sont ajoutés à l’email.
- Envoi de l’e-mail :
- La méthode .Send envoie l’email immédiatement. Si vous souhaitez simplement ouvrir l’email sans l’envoyer, vous pouvez utiliser .Display à la place.
- Ajout de fichier joint (facultatif) :
- Si vous avez un fichier à joindre, vous pouvez définir son chemin dans la variable fichierPJ. Le fichier sera joint avec .Attachments.Add.
- Message de confirmation :
- Un message de confirmation s’affiche après l’envoi de l’email, pour informer l’utilisateur que l’email a été envoyé avec succès.
Utilisation :
- Exécution du code : Pour exécuter ce code, vous pouvez soit appuyer sur F5 dans l’éditeur VBA, soit lier le code à un bouton dans votre feuille Excel (en utilisant le contrôleur de formulaire « Bouton » dans Excel).
Personnalisation :
- Destinataire : Vous pouvez récupérer l’adresse e-mail à partir de n’importe quelle cellule Excel (par exemple, Range(« A1 »).Value).
- Corps du message : Si vous avez plusieurs lignes dans Excel, vous pouvez récupérer les valeurs des cellules et les insérer dans le corps de l’email.
Voici un exemple pour récupérer le destinataire et le corps d’un email à partir des cellules Excel :
destinataire = Range("A1").Value ' Adresse e-mail dans la cellule A1
corps = Range("B1").Value ' Message dans la cellule B1
Ce code est très flexible et peut être adapté pour envoyer des e-mails en masse à partir de listes dans Excel ou automatiser des notifications.