Bonjour,
Je débute en vba et je travail sur un projet de récupération et de traitement de pièce jointe et j'ai un soucis dans mon code lorsque je veux récupérer le mail.
J'ai un Objet OLmail qui je suppose se cast en MailItem lors d'un For Each mais j'ai l'impression que le cast ne se fais pas complètement et du coup je me retrouve avec certaines propriétés du MailItem qui ne fonctionne pas tel que .Sender et j'obtiens une erreur 438. C'est qu'une supposition, il est possible que le problème vienne d'autre part mais je ne vois pas où et j'ai passé beaucoup trop de temps dessus :/
Mon code:
Merci d'avance
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 '----------------------------------------- '-- Fonction de recherche récurrente d'un mail '-- et récupération d'une pièce jointe pour enregistrement '-- Entrée: - Dossier parcouru ' - Format de la pièce jointe '----------------------------------------- Private Sub SearchFolders(ByVal Fld As Outlook.MAPIFolder, Format As String) Dim y As Integer Dim OLmail As Object 'As Outlook.MailItem Dim PJ 'As Outlook.Attachment Dim SousDossier As MAPIFolder Dim pceJointe As String Dim olExchUser '-- Pour chaque sous-dossier du dossier principal For Each SousDossier In Fld.Folders If SousDossier.DefaultItemType = 0 Then '-- Pour chaque email For Each OLmail In SousDossier.Items If OLmail.SenderEmailType = "EX" Then Set olExchUser = OLmail.Sender.GetExchangeUser() If Not (olExchUser Is Nothing) Then If InStr(olExchUser.PrimarySmtpAddress, "NomClient") > 0 Then For Each PJ In OLmail.Attachments '-- on vérifie que la pièce jointe est du format voulu If Mid(PJ, InStrRev(PJ, ".") + 1) = "xlsx" Then '-- Enregistrement de la pièce jointe en fonction de la date d'arrivé du mail TriFichierParDate OLmail.ReceivedTime, PJ GoTo Fin End If Next PJ End If End If Else If InStr(OLmail.SenderEmailAddress, "NomClient") > 0 Then For Each PJ In OLmail.Attachments '-- on vérifie que la pièce jointe est du format voulu If Mid(PJ, InStrRev(PJ, ".") + 1) = "xlsx" Then '-- Enregistrement de la pièce jointe en fonction de la date d'arrivé du mail TriFichierParDate OLmail.ReceivedTime, PJ GoTo Fin End If Next PJ End If End If Next OLmail End If SearchFolders SousDossier, Exp, Format Next SousDossier Fin: End Sub
Partager