VBA – Envoyer des Courriels Depuis Excel via Outlook
In this Article
Ce tutoriel vous montrera comment envoyer des courriels depuis Excel via Outlook en utilisant VBA.
Envoi du Classeur Actif
Function EnvoyerClasseurActif(strÀ As String, strObjet As String, Optional strCC As String, Optional strContenu As String) As Boolean
On Error GoTo GestionErreur
Dim appOutlook As Object
Dim mItem As Object
' Créez une nouvelle instance d'Outlook
Set appOutlook = CreateObject("Outlook.Application")
Set mItem = appOutlook.CreateItem(0)
With mItem
.To = strÀ
.CC = ""
.Subject = strObjet
.Body = strContenu
.Attachments.Add ActiveWorkbook.FullName
' Utilisez send pour envoyer immédiatement ou display pour afficher à l'écran
.Display 'ou .Send
End With
' Nettoyage des objets
Set mItem = Nothing
Set appOutlook = Nothing
EnvoyerClasseurActif = True
Exit Function
' Gestion des erreurs
GestionErreur:
EnvoyerClasseurActif = False
End Function
La fonction ci-dessus peut être appelée à l’aide de la procédure suivante
Sub SendMail()
Dim strÀ As String
Dim strObjet As String
Dim strContenu As String
' Remplissage des variables
strÀ = "jon.smith@gmail.com"
strObjet = "Veuillez trouver le fichier financier ci-joint"
strContenu = "un texte à insérer ici pour le corps du courriel"
' Appelez la fonction pour envoyer l'e-mail
If EnvoyerClasseurActif(strÀ, strObjet, , strContenu) = True Then
MsgBox "Création de l'e-mail réussie"
Else
MsgBox "La création de l'email a échoué !"
End If
End Sub
Utilisation de la Liaison Anticipée pour faire Référence à la Bibliothèque d’Objets Outlook
Le code ci-dessus utilise une liaison tardive pour faire référence à l’objet Outlook. Vous pouvez ajouter une référence à Excel, et déclarer l’application Outlook et l’élément de messagerie Outlook en utilisant la liaison anticipée si vous préférez. La liaison anticipée rend le code plus rapide, mais peut vous limiter car l’utilisateur doit avoir la même version de Microsoft Office sur son PC.
Cliquez sur le menu Outils et Références pour afficher la boîte de dialogue de référence.
Ajoutez une référence à la bibliothèque d’objets Microsoft Outlook pour la version d’Office que vous utilisez.
Vous pouvez ensuite modifier votre code pour utiliser directement ces références.
Un grand avantage de la liaison anticipée est la liste déroulante contextuelle qui vous montre les objets disponibles à utiliser!
Envoi d’une Seule Feuille à Partir du Classeur Actif
Pour envoyer une seule feuille, vous devez d’abord créer un nouveau classeur à partir du classeur existant, avec uniquement cette feuille, puis envoyer cette feuille.
Function EnvoyerLaFeuilleActive(strÀ As String, strObjet As String, Optional strCC As String, Optional strContenu As String) As Boolean
On Error GoTo GestionErreur
' Déclarez des variables pour contenir les objets requis
Dim clDestination As Workbook
Dim strNomDest As String
Dim clSource As Workbook
Dim fcSource As Worksheet
Dim OutApp As Object
Dim OutMail As Object
Dim strNomTemp As String
Dim strCheminTemp As String
' Créez d 'abord le classeur de destination
Set clDestination = Workbooks.Add
strNomDest = clDestination.Name
' Définissez le classeur et la feuille source
Set clSource = ActiveWorkbook
Set fcSource = clSource.ActiveSheet
' Copie de la feuille active dans le nouveau classeur
fcSource.Copy After:=Workbooks(strNomDest).Sheets(1)
'Sauvegarde avec un nom temporaire
strCheminTemp = Environ$("temp") & "\"
strNomTemp = "Liste obtenue à partir de " & clSource.Name & ".xlsx"
With clDestination
.SaveAs strCheminTemp & strNomTemp
' Envoyez maintenant un courriel au classeur de destination
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = strÀ
.Subject = strObjet
.Body = strContenu
.Attachments.Add clDestination.FullName
' Utilisez send pour envoyer immédiatement ou display pour afficher à l'écran
.Display 'ou .Display
End With
.Close False
End With
' Supprimez le classeur temporaire que vous avez joint à votre message
Kill strCheminTemp & strNomTemp
' Nettoyer les objets pour libérer la mémoire
Set clDestination = Nothing
Set clSource = Nothing
Set fcSource = Nothing
Set OutMail = Nothing
Set OutApp = Nothing
EnvoyerLaFeuilleActive = True
Exit Function
GestionErreur:
EnvoyerLaFeuilleActive = False
MsgBox Err.Description
End Function
et pour exécuter cette fonction, nous pouvons créer la procédure suivante
Sub EnvoyerFeuilleParCourriel()
Dim strÀ As String
Dim strObjet As String
Dim strContenu As String
strÀ = "jon.smith@gmail.com"
strObjet = "Veuillez trouver le fichier financier ci-joint"
strContenu = "Un texte est placé ici pour le corps de l'e-mail"
If EnvoyerLaFeuilleActive(strÀ, strObjet, , strContenu) = True Then
MsgBox "Création d'email réussie"
Else
MsgBox "La création de l'email a échoué !"
End If
End Sub
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!