Bonjour,
Je travaille sur une base de données Access sur laquelle j'effectue notamment des enregistrements de mails outlook afin de stocker dans ma table des informations telles que Titre, Corps, Date de réception, destinataires etc...
Pour cela, je parcours les mails de ma boîte de réception et effectue des actions si leur date + heure de réception est plus récente que celles du dernier mail enregistré dans ma table. Ma boucle commence au dernier mail reçue dans ma boite de réception et s'arrête lorsque j'arrive à un mail déjà enregistré
Voici la partie de code principale :
Ce code ne retourne aucune erreur. il fonctionnait très bien sous Outlook 2007 mais depuis que je suis passé sur Outlook 2013, la boucle For Each ne commence pas au dernier mail reçue dans ma boite de réception, ce qui fait que j'enregistre plus aucun mail dans ma table.
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 Set OLapp = CreateObject("Outlook.application") Set OLspace = OLapp.GetNamespace("MAPI") Set BoiteReception = OLspace.Folders("Nom du dossier de messagerie").Folders("Boîte de réception") Set oFSO = New Scripting.FileSystemObject Set oRst = CurrentDb.OpenRecordset("SELECT Max(DateReception) FROM tblEnregistrementCourriers") etape = False PiecesJointes = "" '----------------------------------------------------- 'Parcours de la boite de réception '----------------------------------------------------- CompteurMess = 0 For Each i In BoiteReception.Items If CDate(Format(i.ReceivedTime, "dd/mm/yyyy hh:mm")) > CDate(Format(oRst.Fields(0), "dd/mm/yyyy hh:mm")) ..... Else Exit For End If Next i
J'ai réussi manuellement à mettre à jour le dossier via Outlook. La boucle For Each a donc bien commencé au dernier mail reçue mais la démarche est longue et contraignante.
Il y a t-il un moyen de synchroniser mon dossier via mon code VBA ? Avez-vous d'autres solutions ?
D'avance merci pour vos réponses,
Nicolas Guibé
Partager