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 :

Répondre à un mail en insérant le contenu d'un .msg [OL-2013]


Sujet :

VBA Outlook

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 64
    Points : 75
    Points
    75
    Par défaut Répondre à un mail en insérant le contenu d'un .msg
    Bonjour le fofo,

    Je reviens vers des champions afin de voire s'il existe une solution à cette demande.

    Pour faire simple, j'ai enregistré des mails types sur mon serveur dans un répertoire défini (du genre \\partage\Tintin\mails_types\ et ici tous mes .msg)

    Ouvrir l'un de ces mails types via outlook, c'est assez simple je ne me complique pas l'existence, j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Set newItem = Application.CreateItemFromTemplate("\\partage\Tintin\mails_types\superréponsequidéboite.msg")
    newItem.Display
    Set newItem = Nothing
    ça ok, no problemo, comme ça tous les users à qui j'installe cette macro peuvent ouvrir le mail type, avec sa signature, et ça c'est beau !

    Maintenant ma demande :

    Comment puis-je faire pour répondre à un mail entrant, en incorporant mon mail type dans le corps du mail réponse ? c'est confus à dire comme ça je l'admets.

    Mais en fait c'est "simple"

    Je reçois un mail, je veux y répondre (donc je garde son contenu) et j'y incorpore mon .msg

    Is that possible ?

    Merci par avance à ceux qui réfléchiront sur le sujet.

    Pets

  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
    Salut,

    par exemple tu peux faire comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ' ca c'est la reponse
    Set MyItem = activeinspector.currentitem
     
    MyItemHTML= MyItem.HTMLBODY
     
    Set newItem = Application.CreateItemFromTemplate("\\partage\Tintin\mails_types\superréponsequidéboite.msg")
    newItem.Display
     
    MyItem.htmlbody =NewItem.HTMLBODY & " " & MyItemHTML
     
    NEWITEM.close

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 64
    Points : 75
    Points
    75
    Par défaut
    Salut Oliv,

    Merci de ta réponse.

    C'est presque nickel, en ce sens qu'il ne me reprend pas l'image qui accompagne ma signature !

    Une des pistes à laquelle je pensais, était de mettre les mails types dans un folder, et de faire genre un copier coller du body.

    Qu'en penses-tu ?

  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
    Citation Envoyé par don_pets Voir le message
    ...

    C'est presque nickel, en ce sens qu'il ne me reprend pas l'image qui accompagne ma signature !
    c'est quoi la signature par défaut ?

    Une des pistes à laquelle je pensais, était de mettre les mails types dans un folder, et de faire genre un copier coller du body.

    Qu'en penses-tu ?
    C'est ce que je fais dans le code transmis mais en HTML donc effectivement cela ne reprend pas les images,

    En principe si tu as défini une signature par défaut pour les réponses, lorsque tu fais un .Display elle se met !


    Avec le code précédent tu devrais dans ce cas avoir 2 fois ta signature ?

    Après cela dépend aussi quand tu lances ta macro avant ou après avoir cliqué sur répondre.


    L'autre méthode c'est de faire un copier coller avec WORDEDITOR (=macro WORD)

    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
    Sub FusionReponseEtMsg()
        Dim MonOutlook As Outlook.Application
        Dim mail As Object
        Dim LeMail As Outlook.MailItem
        Dim MyNewMail As Outlook.MailItem
        Dim LesMails As Object
        Dim HTML As String
        Dim objWordDocEditor
        Set MonOutlook = Outlook.Application
     
        Set MyNewMail = MonOutlook.ActiveInspector.CurrentItem
        Dim NewWordEditor
        MyNewMail.Display
        'MyNewMail.HTMLBody = ""
        Set NewWordEditor = MyNewMail.GetInspector.WordEditor
     
        Numero = 1
     
        Set LeMail = Application.CreateItemFromTemplate("e:\temp\test.msg")
        '  LeMail.Display
     
        If LeMail.GetInspector.EditorType = olEditorWord Then
            'Word format email so try to copy with formatting
            'http://www.outlookcode.com/article.aspx?id=31
            'http://support.microsoft.com/kb/212682
            Set objWordDocEditor = LeMail.GetInspector.WordEditor
            objWordDocEditor.Range.Copy
            ' NewWordEditor.Range.Paste
            Set objSel = NewWordEditor.Windows(1).Selection
            objSel.MOVE wdStory, -1
     
            objSel.MOVE wdParagraph, 1
     
            objSel.Paste    'AndFormat (wdPasteDefault)
            Numero = Numero + 1                    ' ajout de ligne
        End If
        LeMail.Close olDiscard
     
        MsgBox "Opération terminée"
    End Sub

  5. #5
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 64
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    c'est quoi la signature par défaut ?
    Chaque user a une signature par défaut qui est identique à savoir le logo de la boutique (donc l'image) et ensuite le nom et coordonnées.


    Citation Envoyé par Oliv- Voir le message
    Avec le code précédent tu devrais dans ce cas avoir 2 fois ta signature ?
    L'idée c'est que comme initialement je lançais les mails types (mes .msg) via un excel et que je les ai filé à plusieurs personnes, pour ne pas être embêté avec les signatures je n'en mettais pas sur les mails types. Le texte s'arrêtait sur "Sincères salutations,". Ainsi chaque personne cliquant sur le bouton mail type avait le message qui s'ouvrait avec sa propre signature.

    Mais l'inconvénient de cette manipulation, c'est que si tu veux répondre à un mail entrant, tu vas sur le fichier excel, tu cliques sur le mail type désiré, et ensuite tu copies colles le contenu du mail entrant, ce qui n'est pas l'extase.

    Dans ce que j'avais imaginé, c'était de pouvoir répondre à un mail entrant, en cliquant un bouton via ton bandeau réponse + mail type. Ainsi tu as et l'historique et le mail type et la signature.

    En tenant ta deuxième méthode j'obtiens une erreur sur objSel.Move wdStory, -1 paramètre incorrect

  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
    Essaye en ajoutant une référence à MICROSOFT WORD 1X.0 OBJECT LIBRARY

  7. #7
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 64
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Essaye en ajoutant une référence à MICROSOFT WORD 1X.0 OBJECT LIBRARY
    Arrf il est toujours plus facile d'oublier ce qui est évident !!

    Cela fonctionne presque nickel ^^.

    La macro ne se lance que si je fais répondre, ce qui n'est pas dérangeant mais me colle deux signatures !

    Mais le résultat est déjà probant !!

  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
    Peut être dans ce cas utiliser la méthode OpenSharedItem au lieu de CreateItemFromTemplate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Get a reference to a NameSpace object.
        Set oNamespace = Application.GetNamespace("MAPI")
     
        Set LeMail = oNamespace.OpenSharedItem( _
                          "C:\temp\Mise à jour CRM.msg")

  9. #9
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 64
    Points : 75
    Points
    75
    Par défaut
    Salut Oliv,

    Pardonne ma réponse tardive j'ai été happé par la réunion du jeudi qui commence de manière inattendu et se termine à pas d'heure !

    Je viens de tester ta dernière modification et c'est exactement ça !!

    Comme d'habitude tu m'as trouvé la parade, merci Oliv.

    Donc pour les gens qui auraient un jour ce même besoin que ouame, voici le code que j'utilise pour répondre à un mail en utilisant un mail type

    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
     Dim MonOutlook As Outlook.Application
        Dim mail As Object
        Dim LeMail As Outlook.MailItem
        Dim MyNewMail As Outlook.MailItem
        Dim LesMails As Object
        Dim HTML As String
        Dim objWordDocEditor
        Set MonOutlook = Outlook.Application
     
        Set MyNewMail = MonOutlook.ActiveInspector.CurrentItem
        Dim NewWordEditor
        MyNewMail.Display
        'MyNewMail.HTMLBody = ""
        Set NewWordEditor = MyNewMail.GetInspector.WordEditor
     
        Numero = 1
     
    ' Get a reference to a NameSpace object.
        Set oNamespace = Application.GetNamespace("MAPI")
     
        Set LeMail = oNamespace.OpenSharedItem( _
                          "nomdurep\mailquideboite.msg")
     
        If LeMail.GetInspector.EditorType = olEditorWord Then
            Set objWordDocEditor = LeMail.GetInspector.WordEditor
            objWordDocEditor.Range.Copy
            ' NewWordEditor.Range.Paste
            Set objSel = NewWordEditor.Windows(1).Selection
            objSel.Move wdStory, -1
     
            objSel.Move wdParagraph, 1
     
            objSel.Paste    'AndFormat (wdPasteDefault)
            Numero = Numero + 1                    ' ajout de ligne
        End If
        LeMail.Close olDiscard
    ne pas oublier de déclarer la référence à MICROSOFT WORD 1X.0 OBJECT LIBRARY

    Encore une fois merci Oliv !

    Pet's

  10. #10
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 64
    Points : 75
    Points
    75
    Par défaut
    'llo le fofo,

    Dans le même ordre d'idée mais avec la possibilité d'ajouter directement une PJ via une fenêtre de dialogue :

    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
    47
    48
    49
    Dim MonOutlook As Outlook.Application
    Dim mail As Object
    Dim LeMail As Outlook.MailItem
    Dim MyNewMail As Outlook.MailItem
    Dim LesMails As Object
    Dim HTML As String
    Dim objWordDocEditor
    Dim myAttachments As Outlook.Attachments
     
    Set MonOutlook = Outlook.Application
     
    Set MyNewMail = MonOutlook.ActiveInspector.CurrentItem
    Dim NewWordEditor
    MyNewMail.Display
     
    Set NewWordEditor = MyNewMail.GetInspector.WordEditor
     
    Numero = 1
     
    Set oNamespace = Application.GetNamespace("MAPI")
     
    Set LeMail = oNamespace.OpenSharedItem( _
      "chemin\monmailquidéboite.msg")
     
    If LeMail.GetInspector.EditorType = olEditorWord Then
    Set objWordDocEditor = LeMail.GetInspector.WordEditor
    objWordDocEditor.Range.Copy
     
    Set objSel = NewWordEditor.Windows(1).Selection
    objSel.Move wdStory, -1
     
    objSel.Move wdParagraph, 1
     
    objSel.Paste
    Numero = Numero + 1
     
    End If
     
    Dim XL As Object
    Dim strTest As String
    Set XL = CreateObject("Excel.Application")
     
    piecejointe = XL.GetOpenFilename()
     
    Set myAttachment2 = MyNewMail.Attachments
    myAttachments.Add piecejointe
     
     
    LeMail.Close olDiscard

    Enjoy

    Pet's

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/06/2010, 10h55
  2. Redirection mail en fonction du contenu
    Par frycrash dans le forum Développement
    Réponses: 3
    Dernier message: 02/03/2010, 13h01
  3. [WD12] Interdire de répondre à un mail
    Par kwakly dans le forum WinDev
    Réponses: 2
    Dernier message: 02/10/2008, 07h21
  4. [Mail] Lire intitulé ou contenu
    Par Jahprend dans le forum Langage
    Réponses: 2
    Dernier message: 13/08/2008, 14h36
  5. Réponses: 18
    Dernier message: 07/09/2006, 17h03

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