VBA dans Esxcel pour envoyer emails dans outlook

Bonjour,

J'ai utlisé le code ci-dessous trouvé sur le web.

Mais l'envoi de l'email ne fonctionne pas, l'instruction ".Send" ne fait rien.

Y a t-il des prérequis ou autre svp ?

Merci beaucoup !

Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String)

On Error GoTo EnvoyerEmailErreur

'définition des variables
Dim oOutlook As Outlook.Application
Dim oMailItem As Outlook.MailItem

'vérification si le Contenu du mail n'est pas vide. Si oui, email n'est pas envoyé. Si vous voulez pouvoir envoyer les email vides, mettez en commentaire les 4 lignes de code qui suivent.
If Len(ContenuEmail) = 0 Then
MsgBox "Mail non envoyé car vide", vbOKOnly, "Message"
Exit Sub
End If

'préparer Outlook
PreparerOutlook oOutlook
Set oMailItem = oOutlook.CreateItem(0)

'création de l'email
With oMailItem
.To = Destinataire
.Subject = Sujet

'CHOIX DU FORMAT
'----------------------
'email formaté comme HTML (aussi par défaut)
.BodyFormat = olFormatHTML
.HTMLBody = "<html><p>" & ContenuEmail & "</p></html>"

'OU

'email formaté comme simple texte sans formats
'.BodyFormat = olText
'.Body = ContenuEmail

'OU

'email formaté comme texte riche (= avec formats)
'.BodyFormat = olFormatRichText
'.Body = ContenuEmail
'----------------------

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 (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

Exit Sub
EnvoyerEmailErreur:
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub

Private Sub PreparerOutlook(ByRef oOutlook As Object)

'------------------------------------------------------------------------------------------------
'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 oOutlook = GetObject(, "Outlook.Application")

If (Err.Number > 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
Err.Clear
Set oOutlook = 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

Hello,

Tu utilises une early binding :

Dim oOutlook As Outlook.Application

donc il faut activer une référence , en l'occurrence outlook.

C'est indiqué sur le site : https://excel-malin.com/codes-sources-vba/envoyer-un-email-avec-excel/

++

Rechercher des sujets similaires à "vba esxcel envoyer emails outlook"