Envoyer des e-mails directement depuis Microsoft Excel est simple grâce à des scripts VBA. Ajoutez cette fonctionnalité à vos feuilles de calcul pour booster votre productivité et automatiser vos tâches.
Nous avons déjà exploré de nombreuses macros Excel sans programmation. Cependant, VBA permet des automatisations avancées, comme la génération de rapports incluant les données de votre PC.
Préférez une vidéo ? Découvrez notre tutoriel vidéo !
De multiples raisons motivent l'envoi d'e-mails via Excel : notifications automatiques pour mises à jour hebdomadaires de documents, envoi groupé à une liste de contacts, ou rapports personnalisés.
Contrairement aux idées reçues, cela ne nécessite pas de compétences avancées en programmation. Ce tutoriel utilise Collaboration Data Objects (CDO), une fonctionnalité VBA intégrée à Windows depuis ses premières versions (ex-CDONTS, puis CDO pour Windows 2000).

CDO est préinstallé dans Excel et Word, rendant l'envoi d'e-mails ultra-simple. Ici, nous envoyons le contenu d'une cellule spécifique.
Accédez à l'onglet Développeur (activez-le via Fichier > Options si nécessaire). Cliquez sur Insérer > Bouton (Contrôles de formulaire).

Dessinez le bouton, puis cliquez sur Macros et Créer pour ouvrir l'éditeur VBA.

Dans l'éditeur, allez dans Outils > Références, cochez Microsoft CDO for Windows 2000 Library et validez.


Notez le nom de la macro (ex. : Button1_Click) pour l'étape finale.
Créez les objets et définissez les champs obligatoires (De et À) :
Dim CDO_Mail As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As String
strSubject = "Résultats de la feuille de calcul Excel"
strFrom = "votre@email.com"
strTo = "destinataire@email.com"
strCc = ""
strBcc = ""
strBody = "Les résultats totaux pour ce trimestre sont : " & Str(Sheet1.Cells(2, 1))
Personnalisez strBody en concaténant (&) des données Excel pour un message dynamique.
Configurez pour Gmail (non-SSL ici ; pour SSL, consultez des ressources avancées sur GitHub) :
Set CDO_Mail = CreateObject("CDO.Message")
On Error GoTo Error_Handling
Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields
With SMTP_Config
.Item("https://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("https://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("https://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("https://schemas.microsoft.com/cdo/configuration/sendusername") = "votre@email.com"
.Item("https://schemas.microsoft.com/cdo/configuration/sendpassword") = "votre_mot_de_passe"
.Item("https://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("https://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
.Update
End With
With CDO_Mail
Set .Configuration = CDO_Config
End With
Assignez les champs et envoyez :
With CDO_Mail
.Subject = strSubject
.From = strFrom
.To = strTo
.TextBody = strBody
.CC = strCc
.BCC = strBcc
.Send
End With
Error_Handling:
If Err.Description <> "" Then MsgBox Err.Description
Aucun pop-up Outlook ni alerte sécurité. CDO utilise directement votre SMTP.
Associez au bouton : Dans l'éditeur, sélectionnez la feuille, ajoutez Call NomDeVotreMacro dans l'événement bouton.

Exemple d'e-mail reçu :

Note : Erreur "transport failed" ? Vérifiez SMTP, port, identifiants.
Pour exécution auto à l'ouverture : Copiez le code complet dans ThisWorkbook > Workbook_Open().

Utilisez le Planificateur de tâches Windows pour ouvrir Excel périodiquement.

Créez tâche basique > Action > Démarrer programme : chemin Excel + arguments (chemin fichier).

Testez avec délai court. Ajustez Centre de gestion de la confidentialité (Fichier > Options > Centre de confiance > Paramètres > Macros : "Ne pas afficher").
Excel est puissant, mais VBA débloque l'automatisation. Commencez par notre guide VBA Excel pour exceller rapidement.
[]