FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

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 !

Pourquoi envoyer des e-mails depuis Excel ?

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).

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

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.

Étape 1 : Créer une macro VBA

Accédez à l'onglet Développeur (activez-le via Fichier > Options si nécessaire). Cliquez sur Insérer > Bouton (Contrôles de formulaire).

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

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

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

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

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étapeTutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

Notez le nom de la macro (ex. : Button1_Click) pour l'étape finale.

Étape 2 : Configurer les champs From et To

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.

Étape 3 : Configurer CDO pour un SMTP externe

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

Étape 4 : Finaliser et envoyer

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.

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

Exemple d'e-mail reçu :

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

Note : Erreur "transport failed" ? Vérifiez SMTP, port, identifiants.

Automatiser complètement

Pour exécution auto à l'ouverture : Copiez le code complet dans ThisWorkbook > Workbook_Open().

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

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

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

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

Tutoriel : Envoyer des e-mails depuis Excel avec VBA et CDO – Guide étape par étape

Testez avec délai court. Ajustez Centre de gestion de la confidentialité (Fichier > Options > Centre de confiance > Paramètres > Macros : "Ne pas afficher").

Maîtrisez Excel avec VBA

Excel est puissant, mais VBA débloque l'automatisation. Commencez par notre guide VBA Excel pour exceller rapidement.

[]