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 récupérer le mail "brouillon" après avoir répondu à un mail


Sujet :

VBA Outlook

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Comment récupérer le mail "brouillon" après avoir répondu à un mail
    Bonjour,

    Après avoir cliqué sur répondre pour un mail donné, j'aimerais récupérer dans une variable le mail de réponse (en mode brouillon) plutôt que l'original.

    Nom : GetDraft.png
Affichages : 1148
Taille : 45,9 Ko

    Ci dessus, supposons qu'on ait répondu au mail qui se trouve être le premier parmi ceux sélectionnés dans l'explorer, lorsqu'on utilise l'expression application.ActiveExplorer.Selection.Item(1) on récupère le mail original et non le brouillon;
    Comment récupérer le brouillon qui est en général affiché dans le panneau de lecture?

    Je préférerais une solution générale qui ne nécessite pas de passer par activeexplorer.ActiveInlineResponse qui ne renvoie le brouillon que dans le cas où celui ci est affiché dans le volet de lecture.
    Quelque chose qui permettrait à partir de l'objet mailitem original de trouver sa réponse en brouillon.
    (je sais, je suis un peu exigeant )

    Merci de vos réponses

    Desag

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    C'est OUTLOOK 2013 ça non ?
    J'ai jamais vu ce mode brouillon sous OL2010, mais à priori je dirais que si la réponse est envoyée, il n'y a plus de brouillon.

    Explorer.ActiveInlineResponse Property (Outlook)
    Office 2013
    Renvoie un objet d'élément représentant l'élément de réponse inline actif dans l'Explorateur de volet de lecture. En lecture seule.
    Informations de version
    Version ajoutée : Outlook 201
    3

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut En cours d'édition
    Bonsoir,

    Non, c'est en cours d'édition avant l'envoi.

    Desag

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,

    Je sais pas mais ton explication ou les écrans 2013 m'ont perturbés, mais il me semble que la réponse est simple.
    Pour travailler avec le mail en cours (donc la réponse avant envoi).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub mailencours()
        Dim MailItem As Outlook.MailItem
        Set MailItem = ActiveInspector.CurrentItem
     
        If MailItem.BodyFormat = olFormatHTML Then
            MsgBox MailItem.HTMLBody
        Else
            MsgBox MailItem.Body
        End If
    End Sub
    Si tu veux modifier le contenu de ce mail, 2 méthodes soit tu modifis directement le .body ou .htmlbody selon le format du fichier.
    Soit tu entre en mode WORD et tu utilises les macros WORD pour modifier le text à partir de :

    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
    Sub InsertBodyTextInWordEditor()
        Dim myItem As Outlook.MailItem
        Dim myInspector As Outlook.Inspector
        'You must add a reference to the Microsoft Word Object Library
        'before this sample will compile
        Dim wdDoc As Word.Document
        Dim wdRange As Word.Range
        
        On Error Resume Next
        Set myItem = Application.CreateItem(olMailItem)
        myItem.Subject = "Testing..."
        myItem.Display
        'GetInspector property returns Inspector
        Set myInspector = myItem.GetInspector
        'Obtain the Word.Document for the Inspector
        Set wdDoc = myInspector.WordEditor
        If Not (wdDoc Is Nothing) Then
            'Use the Range object to insert text
            Set wdRange = wdDoc.Range(0, wdDoc.Characters.Count)
            wdRange.InsertAfter ("Hello world!")
        End If
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut En mode Explorer
    Salut,

    Merci de ta réponse, mais dans le cas présent on n'a pas forcément d'Inspector mais plutôt un Explorer.

    Bonne journée

    Desag

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    Et avec cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub mailencours()
        Dim MailItem
        Set MailItem = ActiveExplorer.ActiveInlineResponse
     
        If MailItem.BodyFormat = olFormatHTML Then
            MsgBox MailItem.HTMLBody
        Else
            MsgBox MailItem.Body
        End If
    End Sub
    Explorer.ActiveInlineResponse

  7. #7
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Comme je le disais dans ma demande de départ :
    Je préférerais une solution générale qui ne nécessite pas de passer par activeexplorer.ActiveInlineResponse qui ne renvoie le brouillon que dans le cas où celui ci est affiché dans le volet de lecture.
    Quelque chose qui permettrait à partir de l'objet mailitem original de trouver sa réponse en brouillon.
    Le problème est que cette solution ne s'applique que si l'on vient de créer le brouillon (en faisant "Répondre") lorsqu'on "revient" sur un mail avec un brouillon cette solution ne marche pas à tous les coups...

    Merci

    Desag

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    et ce brouillon n'est 'il pas dans le dossier brouillons ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Oui mais comment récupérer ce brouillon dans une variable à partir du mail original?

    Merci du mal que tu te donnes.

    Desag

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,

    Voici qui devrait réjouir ta journée !
    dans la fenêtre EXECUTION tu verras des infos sur les dates et le ConversationIndex le plus grand désigne me semble t'il le dernier élément de la conversation.

    là je ne teste que si l'élément est dans les bourillons

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Public monBrouillon As Outlook.MailItem
     
    Sub TrouveLeBrouillon()
    '---------------------------------------------------------------------------------------
    ' Procedure : TrouveLeBrouillon
    ' Author    : OLIV-
    ' Date      : 05/02/2015
    ' Purpose   : trouver le brouillon à parti d'un Email ouvert
    '---------------------------------------------------------------------------------------
    '
        Dim oConv As Outlook.Conversation
        Dim oTable As Outlook.table
        Dim oRow As Outlook.Row
        Dim oMail As Outlook.MailItem
        Dim oItem As Outlook.MailItem
        Const PR_STORE_ENTRYID As String = _
              "http://schemas.microsoft.com/mapi/proptag/0x0FFB0102"
     
        On Error Resume Next
        ' Obtain the current item for the active inspector.
        Set oMail = Application.ActiveInspector.CurrentItem
        Dim FolderBrouillons As Folder
        Set FolderBrouillons = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts)
        If Not (oMail Is Nothing) Then
            ' Obtain the Conversation object.
            Set oConv = oMail.GetConversation
            If Not (oConv Is Nothing) Then
                Set oTable = oConv.GetTable
                oTable.Columns.add (PR_STORE_ENTRYID)
                Do Until oTable.EndOfTable
                    Set oRow = oTable.GetNextRow
                    ' Use EntryID and StoreID to open the item.
                    Set oItem = Application.Session.GetItemFromID( _
                                oRow("EntryID"), _
                                oRow.BinaryToString(PR_STORE_ENTRYID))
    Debug.Print oItem.CreationTime, oItem.ConversationID, oItem.ConversationIndex
                    If oItem.Parent.FullFolderPath = FolderBrouillons.FolderPath Then
                        Set monBrouillon = oMail
                        'Stop
                        'Exit Sub
     
                    End If
                Loop
            End If
        End If
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/08/2007, 14h31
  2. Réponses: 4
    Dernier message: 15/01/2007, 21h33

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