article4

← Retour au blog
Études de cas VBA

Envoyer des emails depuis Excel en VBA : le guide complet

Envoyer des emails depuis Excel est l'une des automatisations les plus rentables. Un commercial qui envoie 50 relances manuelles par semaine peut les automatiser en 20 lignes de VBA.

Prérequis : activer la référence Outlook

Pour envoyer des emails via VBA, tu as besoin d'Outlook installé sur ton ordinateur. La méthode que nous utilisons s'appelle "Early Binding" — elle nécessite d'activer une référence dans l'éditeur VBA.

1
Ouvrir l'éditeur VBA
Appuie sur ALT + F11 pour ouvrir l'éditeur VBA. Si tu ne vois pas le menu Développeur dans Excel, va dans Fichier → Options → Personnaliser le ruban → cocher Développeur.
2
Activer la référence Outlook
Dans l'éditeur VBA → Outils → Références → cocher "Microsoft Outlook XX.0 Object Library" (XX = version installée) → OK.
3
Créer un module
Dans l'éditeur VBA → clic droit sur "VBAProject" dans l'explorateur → Insérer → Module. C'est là que tu colleras le code.
Méthode 1 — Via Outlook (le plus fiable)

Cette méthode utilise Outlook directement. C'est la plus fiable car elle utilise ta configuration email existante.

1Sub EnvoyerEmailSimple() ' Email de base via Outlook
2 Set ol = CreateObject("Outlook.Application") ' Ouvre Outlook
3 Set mail = ol.CreateItem(0) ' 0 = MailItem
4 With mail
5 .To = "client@entreprise.fr" ' Destinataire
6 .Subject = "Rapport " & Format(Now(), "MMMM YYYY")
7 .Body = "Bonjour, veuillez trouver ci-joint votre rapport."
8 .Send ' Envoie immédiatement
9 End With
10End Sub
💡
.Send vs .Display
Remplace .Send par .Display pour ouvrir l'email avant envoi — idéal pour vérifier. Une fois validé, repasse à .Send. Pendant les tests, utilise toujours .Display pour éviter d'envoyer par erreur.
Méthode 2 — Envoi en masse depuis un tableau

Le vrai gain vient quand tu envoies des emails personnalisés à une liste de contacts depuis ton tableau Excel. Chaque email est personnalisé avec le nom et les données de la ligne correspondante.

1Sub EnvoiMasse()
2 Dim ol As Object, mail As Object
3 Dim ws As Worksheet
4 Dim i As Long, derniereLigne As Long
5 Set ws = Sheets("Clients") ' Nom de ta feuille
6 Set ol = CreateObject("Outlook.Application")
7 derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
8 For i = 2 To derniereLigne ' Commence ligne 2 (évite l'en-tête)
9 Set mail = ol.CreateItem(0)
10 With mail
11 .To = ws.Cells(i, 2).Value ' Colonne B = email
12 .Subject = "Facture " & ws.Cells(i, 3).Value ' Col C = n° facture
13 .Body = "Bonjour " & ws.Cells(i, 1).Value & "," & vbCrLf & _
14 "Votre facture de " & ws.Cells(i, 4).Value & "€ est disponible."
15 .Send
16 End With
17 Next i
18 MsgBox "Emails envoyés : " & derniereLigne - 1
19End Sub
⚠️
Important : Teste toujours avec .Display avant .Send. Ajoute une colonne "Envoyé" dans ton tableau et marque chaque ligne après envoi pour éviter les doublons si la macro plante en cours de route.
Back to blog