IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Comment parcourir une conversation [OL-2016]


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club Avatar de Shellyx
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Comment parcourir une conversation
    Bonjour à toutes et à tous,

    Je me permet de poster ici car depuis quelques jours je galère à faire une chose qui parrait pourtant simple, à savoir, parcourir chaque emails d'une conversation.

    Admettons que j'envoie un message à un destinataire X, que celui ci réponde directement à mon email.. Dans ce cas une conversation débute (on garde le même objet, le corps de l'email précédent etc.)

    Ma question est donc: comment faire si je souhaite récupérer les infos à partir du 1er email (le miens donc), puis ensuite récupérer la réponse, et ainsi de suite ?

    Lorsque je parcours mon Inbox et ses sous-dossier j''arrive à afficher uniquement les derniers emails d'une conversation, j'aimerais par exemple que si je tombe sur un mail qui est une réponse à un autre (une conversation donc) alors que je puisse afficher en premier temps le dernier mail en date et remonter l'historique de la conversation en affichant chaques emails jusqu'à celui d'origine.

    Après quelque recherches sur internet et sur le forum il faut croire que ce n'est pas une pratique courante vu le peu de documentation et d'exemples à disposition.. Même sur la documentation officielle de Microsoft les exemples qu'ils donnent pour cette action sont en C# et pas en VBA..

    Genre ici c'est du C#.. sur la documentation VBA Logique MS https://msdn.microsoft.com/fr-fr/vba...object-outlook

    J'ai parcouru un peu la documentation mais je trouve ça très vague au niveau des explications et étant novice en VBA je n'ai pas trouvé les templates adéquats à mes recherches..

    Je vous remercie d'avance pour l'aide que vous pourrez m'apporter ! Je reste bien entendu disponible si vous souhaitez plus de précisions sur ma demande

    A bientôt !

  2. #2
    Futur Membre du Club Avatar de Shellyx
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Ma question est-elle trop générique ? Que dois-je préciser en plus afin d'obtenir de l'aide ?

    Merci d'avance, je reste à disposition si besoin de renseignements.

  3. #3
    Futur Membre du Club Avatar de Shellyx
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Je fais un petit retour suite à mes divers essais...

    Ne parvenant pas à obtenir le résultat souhaité lorsque je passe par les fonctions système disponibles j'ai décidé de "contourner" le problème..

    Voici comment j'ai procédé:

    Afin de pouvoir obtenir le nombre de messages échangés dans une conversation, j'ai tout simplement récupéré le champs "body" de dernier email reçu.

    Je transforme l'objet "body" en string afin de pouvoir l'exploiter. Je parse donc le corps du message à la recherche des mots-clés suivants:
    "From:", "Sent:, "To:", "Subject:" OU "De" "Envoyé", "À" et "Objet" (suivant la langue utilisée (dans Outlook) par l'expéditeur)

    A chaque fois que je rencontre un des mots ci-dessus, je le stocke, dans un tableau dédié au mot en question.

    A la fin du parsing, je compte le nombre d'élements présents dans chaque tableaux et je compare à l'aide de conditions les résultats afin d'obtenir un nombre cohérent.

    Notes: Après plusieurs tests avec diverses conversations j'obtiens des résultats plutot convainquants, cependant, cette méthode n'est pas des plus précises et repose essentiellement sur mes conditions de vérification mais ça fait l'affaire lorsqu'on à pas besoin d'être précis au mail près.

    Je reste à l'écoute malgré tout, si jamais quelqu'un à une solution plus fiable que celle-ci.

    Shellyx

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 224
    Points : 443
    Points
    443
    Par défaut
    Bonjour Shellyx, le forum,

    Voici un essai ou on remonte les mails jusqu’au premier en utilisant .GetConversation.GetParent.

    L’inconvénient est que le code ne semble voir que les mails de la conversation stockés dans le dossier du mail de départ (je ne sais pas si je suis très clair ).
    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
    Sub Test()
    Dim l_o_mail As MailItem
    Dim l_l_lvl As Long
     
        'récupérer le dernier mail de la boite de réception
        With Application.Session.GetDefaultFolder(olFolderInbox)
            On Error Resume Next
             Set l_o_mail = .Items(.Items.Count)
            On Error GoTo 0
        End With
        'arret si la boite de réception est vide où si le dernier élément reçu n'est pas un mail
        If l_o_mail Is Nothing Then Stop
     
        'afficher les information du mail
        l_l_lvl = 0
        Debug.Print l_l_lvl & " - " & l_o_mail.Subject & " (" & Format(l_o_mail.CreationTime, "dd/mm/yyyy hh:mm") & ")"
     
        'boucler sur tous les parents
        While (Not l_o_mail.GetConversation.GetParent(l_o_mail) Is Nothing)      ' And (l_l_lvl < 10)
            'récupérer le parent et afficher les information du mail
            l_l_lvl = l_l_lvl + 1
            Set l_o_mail = l_o_mail.GetConversation.GetParent(l_o_mail)
            Debug.Print l_l_lvl & " - " & l_o_mail.Subject & " (" & Format(l_o_mail.CreationTime, "dd/mm/yyyy hh:mm") & ")"
        Wend
     
    End Sub
    A+

  5. #5
    Futur Membre du Club Avatar de Shellyx
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Bonjour mromain,

    Je viens de tester le code et ça marche parfaitement , c'est exactement ce que je cherchais à faire !

    Je te remercie pour ton partage ! Garde ce bout de code précieusement ahah.

    Je passe le sujet en résolu

    Bonne journée et merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment parcourir une map en sens inverse
    Par alen dans le forum SL & STL
    Réponses: 8
    Dernier message: 03/08/2008, 20h24
  2. [DTD] Comment Parcourir une DTD?
    Par java_prog dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/04/2008, 16h23
  3. Comment parcourir une bases de données SQL
    Par DEV-10 dans le forum VB.NET
    Réponses: 18
    Dernier message: 26/03/2008, 18h03
  4. Comment parcourir une ficher word avec VBA?
    Par megapacman dans le forum VBA Word
    Réponses: 6
    Dernier message: 17/11/2006, 11h11
  5. [VBA Excel]Comment parcourir une collection ?
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/10/2006, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo