Bonjour à tous,
J'essaiede créer une macro pour trier automatiquement mes emails. En somme :
- Je sélectionne dans ma boîte de réception le ou les emails à classer
- J'appel la macro "moveToArchive"
Cette macro fait :
- Change l'état du email en "lu"
- Classe le email (ou le rapport) dans le bon répertoire
Le problème : pas de problème pour classer les emails (class = olMail), par contre c'est une autre paire de manche pour les rapports de lecture (classe = olReport) !
En fait, je n'arrive pas à trouver l'expéditeur du rapport de lecture, je n'arrive donc pas à le classer. Bien sûr, quand la classe du message est "olReport", la fonction "SenderEmailAddress" n'existe pas, d'ou le problème !
Mon code :
code qui pose problème
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 Sub moveToArchive() 'Bligoo - March 2008 'http://bligoo.wordpress.com/ ' OlObjectClass ' olMail = 43 ' olNote = 44 ' olPost = 45 ' olReport = 46 ' olRemote = 47 ' Liste complète : http://support.microsoft.com/kb/285202/fr On Error Resume Next Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder Dim objNS As Outlook.namespace Dim objItem As Object ' Impossible de mettre "MailItem" ??? Set objNS = Application.GetNamespace("MAPI") Set objInbox = objNS.GetDefaultFolder(olFolderInbox) ' Set objFolder = objNS.Folders("Dossiers 2008") ' À retenir : objNS.Folders(Dossiers personnels).Folders(sous dossier).Folders(Sous sous dossier) ' Exemple : Set objFolder = objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("Interne").Folders("MP") Set objFolder = objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("Interne").Folders("MP") If Application.ActiveExplorer.Selection.Count = 0 Then '[asy]Contrôle qu'au moins un message est sélectionné, sinon fin de la macro Exit Sub End If If objFolder Is Nothing Then '[asy]Controler que le dossier de destination est valide MsgBox "Le dossier cible n'existe pas!", vbOKOnly + vbExclamation, "INVALID FOLDER" End If For Each objItem In Application.ActiveExplorer.Selection If objFolder.DefaultItemType = olMailItem Then Select Case objItem.Class Case olMail: ' Courriel objItem.UnRead = False '[asy]Le mail passe dans le statut lu ' objItem.Move objFolder '[asy]Le mail est déplacé dans le répertoire cible NomExp = objItem.SenderName AdresseExp = objItem.SenderEmailAddress Domaine = Split(AdresseExp, "@") Select Case Domaine(1) Case "mailingprocess.com": Select Case Domaine(0) ' Nom de l'expéditeur Case "SRVVALIPOST1" objItem.Move objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("Serveur.Valipost") Case "destineo" objItem.Move objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("Serveur.Valipost").Folders("Bordereaux") Case Else objItem.Move objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("Interne").Folders("MP") End Select Case "routage-et-marketing.com": objItem.Move objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("Interne").Folders("RMP") Case "bip.laposte.fr" objItem.Move objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("La Poste").Folders("info@bip.laposte.fr") End Select Case olReport: ' Rapport : Courriel Lu uniquement objItem.UnRead = False '[asy]Le mail passe dans le statut lu ' Impossible d'obtenir le nom de l'expéditeur ' NomExp = objItem.SenderName ' AdresseExp = objItem.SenderEmailAddress ' Domaine = Split(AdresseExp, "@") ' objItem.Move objNS.Folders("Dossiers 2008").Folders("Boîte de réception").Folders("Interne").Folders("MP").Folders("Lu") End Select End If Next Set objItem = Nothing Set objFolder = Nothing Set objInbox = Nothing Set objNS = Nothing End Sub
Le type olReport n'ayant pas les mêmes propriétés que olMail, impossible de trouver de qui vient le rapport de lecture. Le courrier étant envoyé à plusieurs destinataires, même si je regarde à l'intérieur du "body", je ne trouve pas de qui le message m'est envoyé ! Le plus drôle est qu'il est bien possible de faire répondre mais à partir de l'interface. Dur dur la vie !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Case olReport: ' Rapport : Courriel Lu uniquement objItem.UnRead = False '[asy]Le mail passe dans le statut lu ' Impossible d'obtenir le nom de l'expéditeur ' NomExp = objItem.SenderName ' AdresseExp = objItem.SenderEmailAddress ' Domaine = Split(AdresseExp, "@")
Moi j'ai bien beau chercher, je n'ai rien trouvé pour m'en sortir ! Au secours !
Partager