exemple trouvé sur forum
Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal Destinataire1 As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String)
On Error GoTo EnvoyerEmailErreur
'définition des variables
Dim Outlook As Object
Dim MailItem As Object
If Len(ContenuEmail) = 0 Then
MsgBox "Mail non envoyé car vide", vbOKOnly, "Message"
Exit Sub
End If
'préparer Outlook
'PreparerOutlook Outlook
Set Outlook = CreateObject("outlook.application")
Set MailItem = Outlook.CreateItem(0)
'création de l'email
With MailItem
.To = Destinataire
.CC = Destinataire1
.Subject = Sujet
'CHOIX DU FORMAT
'----------------------
If PieceJointe <> "" Then .Attachments.Add PieceJointe
.Display '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire)
'.Save '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire)
'.Send '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire)
End With
'nettoyage...
' If (Not (MailItem Is Nothing)) Then Set MailItem = Nothing
' If (Not (Outlook Is Nothing)) Then Set Outlook = Nothing
Exit Sub
EnvoyerEmailErreur:
' If (Not (MailItem Is Nothing)) Then Set MailItem = Nothing
' If (Not (Outlook Is Nothing)) Then Set Outlook = Nothing
MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub
Private Sub PreparerOutlook(ByRef Outlook As Object)
'par Excel-Malin.com (
https://excel-malin.com )
'------------------------------------------------------------------------------------------------
'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.
'------------------------------------------------------------------------------------------------
On Error Resume Next
'vérification si Outlook est ouvert
Set Outlook = GetObject(, "Outlook.Application")
If (Err.Number > 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
Err.Clear
Set Outlook = CreateObject("Outlook.Application")
If (Err.Number > 0) Then
MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
Exit Sub
Else
End If
Else 'si Outlook est ouvert, l'instance existante est utilisée
End If
End Sub