Bonjour,

J'ai besoin de récupérer une image contenue dans un mail, et l'ajouter à une présentation Powerpoint créée dans le même programme VBA.
Je pense le faire en 2 étapes : récupérer le corps du mail sur un nouveau classeur, puis exporter l'image voulue dans la présentation powerpoint.

Mais j'ai du mal avec la première étape...
Je recherche le mail dans la boîte de réception en fonction de l'objet (Subject) mais la boucle For each qui parcourt les mails pose problème, il y a une erreur "Incompatibilité de type" au niveau du Next. Je ne comprends pas l'erreur... Si je relance directement le programme sans "réinitialiser", il fonctionne, le contenu du mail s'importe comme prévu dans le programme en "A1", cependant comme OLmail est déclarée "String" les images contenu dans le corps du mail arrivent sur le classeur Excel en : cid:image.png (en plus du texte).


Le contenu texte du mail m'importe peu, donc je ne sais pas trop comment déclarée la variable pour que le programme me renvoie les images.




Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
 Dim OLapp As Outlook.Application
 Dim OLspace As Outlook.Namespace
 Dim OLinbox As Outlook.MAPIFolder
 Dim OLfolder As Outlook.MAPIFolder
 Dim OLmail As Outlook.MailItem
 Dim OLpj As Outlook.Attachment 
 
 Private Sub chMail() 
 
     Set OLapp = CreateObject("Outlook.application")
     Set OLspace = OLapp.GetNamespace("MAPI")
     Set OLinbox = OLspace.GetDefaultFolder(olFolderInbox) 
 
     For Each OLmail In OLinbox.Items
         If OLmail.Subject = "Objet_du_mail" Then
             Dim OLbody As String
             OLbody = OLmail.Body 
 
             Dim xlApp As Excel.Application
             Dim wbk As Excel.Workbook
             Dim sht As Excel.Worksheet 
 
             Set xlApp = CreateObject("Excel.Application")
 
             With xlApp
                 .Visible = True
                 Set wbk = .Workbooks.Add
                 Set sht = wbk.ActiveSheet 
 
                 With sht
                     .Range("A1") = OLbody
                 End With
 
             End With 
 
         End If
 
     Next OLmail 
 
 End Sub
Si quelqu'un a déja fait ça ou peut m'aider, n'hésitez pas !

Merci d'avance !