Erreur impossible de trouver l'objet, envoyer un mail outlook avec VBA

Bonjour à tous,

J'ai crée une macro qui doit --> exporter un range en pdf --> ouvrir une template ootlook et joindre le fichier pdf précédemment enregistré.

Tout s'exécute normalement dans le code suivant en pas à pas, sauf la ligne ".display" tout en bas qui me renvoie un message d'erreur : Impossible de trouver l'objet.

Si j'enlève la linge suivante, la template ootlook s'ouvre normalement (mais sans le pdf :/) : If pj <> "" Then .Attachments.Add pj End If<br><br>

Merci d'avance pour votre aide

Sub send_mail_midday()

'Exporte la template en pdf

Dim lheure As String, ladate As String, nompdf As String

Application.ScreenUpdating = False

lheure = Format(Time, "H" & "_" & "M" & "_" & "S")
ladate = Format(Date, "dd" & "_" & "mm" & "_" & "yy")
nompdf = "C:\Users\" & "abc" & " " & ladate & " " & lheure & ".pdf"

With ThisWorkbook.Worksheets("Template_midday").PageSetup
        .PaperSize = xlPaperA4
        .Orientation = xlPortrait
        .PrintArea = "A1:GO124"
        .Zoom = False
End With

    Worksheets("Template_midday").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    nompdf, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=True, from:=1, To:=1, OpenAfterPublish:=False

Application.ScreenUpdating = True

Range("pjref") = nompdf

'prépare le mail

Dim oItem As Outlook.MailItem
Dim oApp As Outlook.Application
Dim pj As String
pj = Range("pjref")

Set oApp = New Outlook.Application
Set oItem = oApp.CreateItemFromTemplate("C:\ test1.oft") 

    With oItem
    .To = ActiveSheet.Range("refmail")
    .Subject = "test"
    If pj <> "" Then
    .Attachments.Add pj
    End If
    .Display

    End With
Range("pjref") = ""

End Sub

bonjour,

le fichier pdf est-il bien créé ?

Bonjour à tous,

Un essai ... sans passer par des intermédiaires pour le chemin et nom du fichier .pdf ...

Sub send_mail_midday()

'Exporte la template en pdf

Dim Lheure As String, Ladate As String, Nompdf As String

Application.ScreenUpdating = False

Lheure = Format(Time, "H" & "_" & "M" & "_" & "S")
Ladate = Format(Date, "dd" & "_" & "mm" & "_" & "yy")
''nompdf = "C:\Users\" & "abc" & " " & ladate & " " & lheure & ".pdf"
Nompdf = "C:\Temp\" & "abc" & " " & Ladate & " " & Lheure & ".pdf"

With ThisWorkbook.Worksheets("Template_midday").PageSetup
        .PaperSize = xlPaperA4
        .Orientation = xlPortrait
        .PrintArea = "A1:GO124"
        .Zoom = False
End With

    Worksheets("Template_midday").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Nompdf, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=True, from:=1, To:=1, OpenAfterPublish:=False

Application.ScreenUpdating = True

'''Range("pjref") = nompdf  '   <<< modif

'prépare le mail

Dim oItem As Outlook.MailItem
Dim oApp As Outlook.Application
Dim pj As String
pj = Nompdf '' Range("pjref")  <<< modif

Set oApp = New Outlook.Application

''' <<< je n'est pas ce template >>>
Set oItem = oApp.CreateItem(0) '''.CreateItemFromTemplate("C:\ test1.oft")

    With oItem
   .To = "jim@hotmail.com" 'ActiveSheet.Range("refmail")
    .Subject = "test"
    If pj <> "" Then .Attachments.Add Nompdf

    .Display

    End With
'''Range("pjref") = ""  '   <<< modif

End Sub

ric

Bonjour,

Oui le fichier pdf est bien créé et je peux même retrouver le mail crée sur Ootlook en brouillon, seulement, la fenêtre d’un nouveau mail ne s’ouvre pas avec mon code. Ça doit être un problème liée à Ootlook mais je comprends pas.

Par ailleurs, si je crée une nouvelle template Ootlook (au lieu de travailler à partir d’un modèle enregistré) tout fonctionne normalement et le pdf est bien joint à la template

Je vais essayer tes modifications Ric !

Bonsoir

Par ailleurs, si je crée une nouvelle template Ootlook (au lieu de travailler à partir d’un modèle enregistré) tout fonctionne normalement et le pdf est bien joint à la template

c'est donc lié à ton template. Peut-être est-ce dû à l'espace que tu as mis entre c:\ et test1 dans "C:\ test1.oft"

Bonjour,

Merci pour vos réponses mais le problème persiste

Je pense que le soucis est lié au format de l'email, je m'explique :

- Si je crée une nouvelle template Ootlook (au lieu de travailler à partir d’un modèle enregistré) tout fonctionne normalement et le pdf est bien joint à la template

- Tout fonctionne également si j'ouvre ma template enregistrée mais que je n'inclus pas le pdf

- Par ailleurs, cela fonctionne aussi si j'ouvre ma template enregistrée, que j'inclus le pdf, et que je précise le format (HTML) avec :

.BodyFormat = olFormatHTML
.HTMLBody = "<html><p>" & "test" & "</p></html>"

Sauf que dans ce cas, le texte de ma template est remplacée par "test" : problématique car j'ai justement crée un modèle pour ne pas avoir à réécrire le contenu du mail.

La seule solution que je vois actuellement serait de réécrire tout mon texte en passant à l'aide des balises HTML, sauf que je m'y connais absolument pas.

Pour une raison ou une autre, le fait de mettre ".Display" avant "If pj <> "" Then .Attachments.Add Nompdf" fonctionne et la template de mail s'ouvre puis mon pdf vient s'ajouter. Mais l'inverse (ajouter pdf puis dispay) ne fonctionne pas.

Il me reste plus qu'à trouver comment inclure le doc pdf (en format image) dans le corps du message, sans effacer le texte déjà présent dans ma template. Si vous connaissez la solution je suis preneur.

Merci!

Rechercher des sujets similaires à "erreur impossible trouver objet envoyer mail outlook vba"