none
Lire Mails dans Outlook (plusieurs boites de reception) RRS feed

  • 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 !")

    samedi 8 septembre 2018 14:01

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
    dimanche 9 septembre 2018 09:02

Toutes les réponses

  • Bonjour

    Oui, vous avez fait MyNewfolder = nothing
    Donc plus d'items au deuxième tour.

    En fait les 3 : set myxxxx=nothing devraient être après l'autre Next.

    samedi 8 septembre 2018 18:22
  • Oui, vous avez fait MyNewfolder = nothing
    Donc plus d'items au deuxième
    tour.

    En fait les 3 : set myxxxx=nothing

    devraient être après l'autre
    Next.

    samedi 8 septembre 2018 18:27
  • 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

    dimanche 9 septembre 2018 06:41
  • 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.

    dimanche 9 septembre 2018 08:38
  • 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
    dimanche 9 septembre 2018 09:02
  • Bonjour,

    Nous etions dans le meme raisonnement.... il manquait un "lien" en mynewfolder et l'oaccount....

    Cela dit.. vous avez trouve avant moi..... cela fonctionne parfaitement.

    Merci beaucoup...

    dimanche 9 septembre 2018 15:09
  • Bonjour

    cela fonctionne parfaitement.

    Super !
    merci pour le retour.

    dimanche 9 septembre 2018 16:03