Bonjour, j'ai ce code mais je n'arrive pas à insérer la pièce jointe, elle se met dans le corps du texte.
j'y arrivait en étant en olFormatHTML mais je n'arrivait pas à faire les sauts de ligne avec "vbCrLf"
Maintenant, je peux faire des sauts de ligne mais la pièce jointe n'est plus intégrée...
Quelqu'un a une idée svp ?
Merci d'avance
j'y arrivait en étant en olFormatHTML mais je n'arrivait pas à faire les sauts de ligne avec "vbCrLf"
Maintenant, je peux faire des sauts de ligne mais la pièce jointe n'est plus intégrée...
Quelqu'un a une idée svp ?
Merci d'avance
VB:
Sub Mail_facture_non_reglee()
'définition des variables
Dim MonSujet As String
Dim MonDestinataire As String
Dim MonContenu As String
Dim MaPieceJointe As String
Dim AdresseExpediteur As String
'attribution des valeurs aux variables
MonSujet = "objet"
MonDestinataire = Worksheets("SUIVI FACTURES").Range("P4")
MonContenu = "Bonjour," & vbCrLf & Range("AX2") & Range("S3") & Range("AX3")
MaPieceJointe = Worksheets("SUIVI FACTURES").Range("P5")
AdresseExpediteur = "email@email.com.com"
'test envoi de l'email
Call EnvoyerEmail(MonSujet, MonDestinataire, MonContenu, MaPieceJointe, AdresseExpediteur)
MsgBox "Test terminé..."
End Sub
Code:
Private Sub PreparerOutlook(ByRef oOutlook 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 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
Code:
Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String, Optional ByVal AdresseExpediteur As String)
'par Excel-Malin.com ( https://excel-malin.com )
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
'sélection de l'addresse de l'expéditeur
If AdresseExpediteur <> "" Then
Dim CompteOutlook As Account
For Each CompteOutlook In oOutlook.Session.Accounts
If CompteOutlook.SmtpAddress = AdresseExpediteur Then
.SendUsingAccount = CompteOutlook
Exit For
End If
Next CompteOutlook
Else
End If
.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
Code:
Function OutlookOuvert() As Boolean
Dim oOL As Object
On Error Resume Next
Set oOL = GetObject(, "Outlook.Application")
On Error GoTo 0
OutlookOuvert = Not (oOL Is Nothing)
Set oOL = Nothing
End Function