Manipulation d'une pièce jointe outlook en VBA

SPT1 -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

A réception d'un message, je souhaite collecter l'image qui est en pièce jointe, et produire un nouveau message avec cette image dans son corps HTML et en pièce jointe.

J'arrive à :
- identifier le message attendu dans outlook,
- identifier si une pièce jointe est présente,
- Préparer et envoyer un message avec un corps HTML
- Mettre une signature outlook

Mais je n'arrive pas à associer la pièce jointe, au mieux j'ai un trombone mais sans document.

Pouvez-vous m'aider ?

Configuration: Windows / Firefox 76.0

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, tu ne nous montres pas ce que tu fais avec la pièce jointe reçue, ni comment tu essaies de la joindre à l'envoi.
    1
  2. SPT1
     
    Voici le contenu du code
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    
    'Variables
    Dim arrID() As String
    Dim i, j As Integer
    Dim ns_outlook As outlook.NameSpace
    Dim item_outlook As MailItem
    Dim itm As outlook.MailItem
    Dim expéditeur As String
    Dim objet_email As String
    Dim outlook As Object
    Dim outlookMail As Object
    Dim Mesattachements As outlook.Attachments
    Dim Piecejointe As outlook.Attachments
    'En cas d'erreur
    On Error Resume Next
    Set ns_outlook = Application.Session
    'Séparer le matricule de l'objet Outlook
    arrID = Split(EntryIDCollection, ",")
    For i = 0 To UBound(arrID)
        Set item_outlook = ns_outlook.GetItemFromID(arrID(i))
        If item_outlook.Class = olMail Then
        
            Set itm = item_outlook
            expediteur = itm.SenderName
            objet_email = itm.Subject
            Set Mesattachements = itm.Attachments
            If Mesattachements.Count > 0 And Right(UCase(Mesattachements(1).FileName), 4) = ".PNG" Then
            'La pièce jointe est une image PNG
            If expediteur = "XXXXX" And objet_email = "TEST" Then
            Set Piecejointe = itm.Attachments(1)
                    Set outlook = CreateObject("Outlook.Application")
                    Set outlookMail = outlook.CreateItem(0)
                    stringbody = "<B><SPAN STYLE='font-family: Segoe UI; font-size:21'>Suivi Quotidien</SPAN></B><br>"
                    stringbody = stringbody & "<SPAN STYLE='font-family: Segoe UI; font-size:12'>Veuillez trouver ci-après le document actualisé.</SPAN><br><br>"
                    stringbody = stringbody & "<SPAN STYLE='font-family: Segoe UI; font-size:12'>Cordialement" & " </SPAN>"
                    'stringbody = stringbody & "<IMG src""cid:
                    With outlookMail
                        .Display
                        .To = "ZZZZZZZZZ"
                        .Subject = "SUJET DU MESSAGE"
                        .HTMLBody = stringbody & .HTMLBody
                        '.Attachments = piecejointe  
                        .Display
                        .Send
                    End With
            End If
            End If
        End If
    Next
    
    Set ns_outlook = Nothing
    Set item_outlook = Nothing
    Set itm = Nothing
    Set Piecejointe = Nothing
    
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
      as-tu ajouté
      option explicit
      en début de module?
      où essaies-tu d'insérer la pièce jointe dans le mail envoyé? je pense que cela se fait en utilisant Add, comme expliqué ici: https://docs.microsoft.com/fr-ch/office/vba/api/outlook.attachments.add
      il me semble probable qu'il faille sauver le fichier sur disque avant de l'attacher à un autre mail.
      0