Comment actualiser un dossier Outlook avec Access VBA

Le forum consacré au logiciel de messagerie professionnel de Microsoft. Messagerie, agenda, gestion des tâches, carnet d'adresses, etc.
Maîtrisez le logiciel en consultant le guide Outlook et les trucs & astuces Outlook !
Répondre
Patrick68
Messages : 7
Enregistré le : 01 avr. 2023 09:42

Comment actualiser un dossier Outlook avec Access VBA

Message par Patrick68 » 30 août 2023 10:10

Bonjour à tous,

J'ai un souci avec IMAP et VBA Access. Lorsque j'envoi des mails à parti d'Access en VBA (Outlook est ouvert), tout est correct. Les mails sont bien envoyés et apparaissent bien dans le dossier "Messages Envoyés" de Outlook et bien sûr chez le FAI puisque j'utilise IMAP.

Le problème que je n'aurai jamais pensé avoir sur une propriété aussi simple est le suivant :

Une fois mes mails envoyés je veux simplement récupérer le nombre de mails présents dans le dossier "Messages envoyés" avec "Items.Count" et là le dossier n'est pas actualisé bien que les mails sont présents.

Si par exemple quand j'ouvre Outlook et qu'il y avait déjà 2 anciens mails dans le dossier "Messages envoyés", et que je fais un "Items.count" au début de mon code, le résultat est bien "2". Puis je lance ma procédure d'envois de mails et une fois les mails envoyés, "Items.Count" me retourne toujours 2 et ne comptabilise par les nouveaux mails bien que ceux-ci soient présents dans le dossier Outlook.

Même si je met un DoEvents après l'envoi des mails, cela ne change rien.

Un truc de fou, si je met un MsgBox après l'envoi des mails et avant le "Items.Count", dans ce cas il m'affiche bien le nombre total de mails. On dirai qu'il a besoin d'une interruption dans le déroulement du programme.

Mon code : "Ouverture d'Outlook avec 2 mails déjà présents (ce pourrait être 0 mail, c'est pareil)
' ----------------------------------
' --- Connexion à Outlook ---
' ---------------------------------
'
Dim Total as Long
'
Dim Instance_Outlook As Outlook.Application
Set Instance_Outlook = New Outlook.Application
'
Dim Espace_Travail As Outlook.Namespace
Set Espace_Travail = Instance_Outlook.GetNamespace("MAPI")
'
Espace_Travail.Logon , , True, False
'
Dim Mli As Outlook.MailItem
'
Dim Dossier_Envoi As Outlook.Folder
Set Dossier_Envoi = Espace_Travail.GetDefaultFolder(olFolderSentMail) ' Dossier principal "Messages envoyés"
'
Total = Dossier_Envoi.Items.Count
MsgBox Total ' Renvoi bien 2
'
' --------------------
' Envois des mails - x mails
' --------------------
'
Mli.Subject = "fgfgfgdd"
'
...
'
Mli.Save
Mli.Send
'
DoEvents ' Do Events ne change rien au problème
'
' -----------------------------------------------
' Récup du nombre total dans le dossier
' -----------------------------------------------
'
Total = Dossier_Envoi.Items.Count
MsgBox Total ' Renvoi toujours 2 - Ne prend pas en compte les nouveaux mails présents dans le dossier
'
' OU SI JE MET UN MSGBOX QUELCONQUE AVANT DE COMPTER
'
MsgBox "Un message" ' Interrompt le code temporairement
Total = Dossier_Envoi.Items.Count
MsgBox Total ' Affiche bien le nombre total de mails (nouveaux y compris)
'
BIEN SUR, je ne veux pas de ce MsgBox au milieu.

Est-ce que je fais quelque chose d'incorrect dans mon code ? Existe il une instruction VBA pour actualiser le dossier "Messages Envoyés" (ou même la session IMAP ou autre collection) après l'envoi de mails ? Du style "Refresh" ou autre ? Qui me permettrai de récupérer un "Items.Count" opérationnel.

Je cherche des solutions et je dois reconnaitre que je bloque. Je ne vois rien qui permette d'actualiser.

Votre aide serait vraiment bienvenue. Merci à vous.

Répondre