Meilleur auteur de réponses
Lire Mails dans Outlook (plusieurs boites de reception)

Question
-
Bonjour,
Je souhaite lire (via un filtre sur le sujet) les mails recus sur plusieurs adresses dans outlook depuis Excel c'est donc du VBA..
Voici le bout de code qui me pose probleme.
Pour la 1ere adresse mail pas de probleme.... le code fonctionne bien. En revanche des que la boucle "for Each oAccount In Session.accounts" passe sur la deuxieme adresse mail, le nombre de mails n'est pas calculé. De ce fait le reste du code ne fonctionne plus.... Avez vous une idee ?
Merci d'avance.
Thierry
Dim myOlApp, myNameSpace, myFolder, myNewFolder Set myOlApp = CreateObject("Outlook.Application") Set myNameSpace = myOlApp.GetNamespace("MAPI") Set myNewFolder = myNameSpace.GetDefaultFolder(6) Dim oAccount As Outlook.account For Each oAccount In Session.accounts 'Compte le nombre d'objet dans le dossier Dim nbmails nbmails = 0 Dim rep nbmails = myNewFolder.Items.Count If nbmails = 0 Then MsgBox ("Adresse = " & oAccount & " Aucun Mail récupérable !") 'Exit Function End If For X = 1 To nbmails With myNewFolder.Items(X) 'Récupère l'émetteur (obligé de faire comme si on y repondait pour le recup dans l'expediteur) Dim MSG, AdrMailEmetteur, RechercheTiers, DateMail, Obj, Corps, CorpsHTML 'Récupère l'objet Obj = .Subject If Obj = "Fwd: Rapport Email de caisse" Then 'Récupère la date du mail DateMail = .CreationTime DateMail = Format(DateMail, "dd/mm/yyyy") 'Récupère le texte 'Corps = .Body 'CorpsHTML = .HTMLBody 'Corps = Replace(Corps, Chr(13), "") ListboxMail.AddItem (DateMail) End If End With Next X Application.ScreenUpdating = True Set myOlApp = Nothing Set myNameSpace = Nothing Set myNewFolder = Nothing Next LblNbMails.Caption = "Nombre de Mails Récupérés : " & ListboxMail.ListCount MsgBox ("Récupération des Mails terminée !")
Réponses
-
Essayez en ajoutant :
Set myNewFolder = oAccount.DeliveryStore.GetDefaultFolder(6)
en début de boucle, c'est à dire juste après :
For Each oAccount In Session.Accounts
- Marqué comme réponse Capricorne83 dimanche 9 septembre 2018 15:09
Toutes les réponses
-
-
-
Bonjour....
Effectivement.... j'aurai du voir cela plus tot..... Cependant... ca ne fonctionne pas....
la ligne
nbmails=mynewfolder.items.count
Ne se "rafraichit" pas.... elle reste "figée" au nombre de mails contenus dans le 1er "oaccount" (Alors que celui ci passe bien à la seconde boite..... Je concede avoir un peu de mal a y voir clair.....
Merci de votre aide.
Thierry
-
Bonjour
la ligne
nbmails=mynewfolder.items.count Ne se "rafraichit" pas.... elle reste "figée" au nombre de mails contenus dans le 1er "oaccount"A l'inverse, je ne vois pas pourquoi ce serait autrement, je ne vois pas de filtrage sur le compte.
Ce pourrait être par le :
GetDefaultFolder(6)
Dans ce cas il faudrait l'introduire dans la boucle et indiquer un lien avec le compte.D'après l'aide, c'est la boite de réception du profil et non d'un compte.
Il manque donc quelque chose.
Perso je n'ai qu'une boite de réception pour tous les comptes, je peux difficilement tester ce cas de figure.Ca n'empêche pas d'essayer.
-
Essayez en ajoutant :
Set myNewFolder = oAccount.DeliveryStore.GetDefaultFolder(6)
en début de boucle, c'est à dire juste après :
For Each oAccount In Session.Accounts
- Marqué comme réponse Capricorne83 dimanche 9 septembre 2018 15:09
-
-