Lorsque vous répondez à un courriel dans Outlook, les pièces jointes originales ne sont pas incluses. Cela est dû au fait que l’on suppose que l’expéditeur initial a toujours accès aux pièces jointes originales.

Il existe toutefois plusieurs scénarios valables dans lesquels il est judicieux de conserver les pièces jointes. Un scénario courant qui en bénéficierait est celui des longs fils de discussion où la fonction « Répondre à tous » est utilisée et où de nouvelles personnes sont ajoutées.

Bien qu’il existe plusieurs solutions de contournement, l’intégration de cette option dans Outlook est plus efficace.

Ce guide contient les solutions intégrées suivantes ;

Macro VBA 1 : intégrée aux commandes standard Répondre et Répondre à tous.
    Installation rapide
    Code de la macro
    Modifications
Macro VBA 2 : commandes séparées Reply / Reply All avec pièces jointes.
    Installation rapide
    Code Macro
Complément : ReplyWithAtt d'IvaSoft

Macro VBA 1 : intégrée aux commandes standard Reply et Reply All.

Bouton Visual BasicCette première macro VBA est une macro tout-en-un qui effectue les opérations suivantes ;

Lorsque vous appuyez sur le bouton standard Répondre ou Répondre à tous, elle détecte si le message auquel vous répondez contient des pièces jointes. Si c'est le cas, elle vous demandera si vous voulez les ajouter ou non.
Vous pouvez configurer la macro pour qu'elle ignore cette invite et ajoute toujours les pièces jointes d'origine. Vous pouvez configurer ce paramètre indépendamment pour les commandes Répondre et Répondre à tous.
En option, vous pouvez ajouter des commandes dédiées pour "Répondre avec pièces jointes" et "Répondre à tous avec pièces jointes". Si c'est la seule chose dont vous avez besoin, il est recommandé d'utiliser la deuxième macro à la place.

Invitation à répondre avec pièces jointes.
Choisissez facilement de conserver vos pièces jointes lorsque vous répondez.

Installation rapide

Suivez les instructions suivantes pour configurer la macro dans Outlook ;

Téléchargez ce fichier de code (replywithattachments.zip) et copiez le code du fichier ReplyWithAttachments.txt ou copiez le code ci-dessous.
Ouvrez l'éditeur VBA (raccourci clavier ALT+F11).
Collez le code copié dans le module ThisOutlookSession.
Signez votre code afin de ne pas recevoir d'invites de sécurité et de ne pas désactiver la macro.
Redémarrez Outlook pour activer la macro car elle repose sur les gestionnaires d'événements.
En option, ajoutez des boutons pour créer des commandes dédiées "Répondre avec les pièces jointes" et "Répondre à tous avec les pièces jointes".

Module ThisOutlookSession dans l’éditeur VBA.
Module ThisOutlookSession dans l’éditeur VBA.

Code de la macro

Le code suivant est contenu dans le fichier zip référencé dans l’installation rapide. Vous pouvez utiliser le code ci-dessous à des fins de révision ou d’installation manuelle.

‘===============================================================================
‘Description : Macro Outlook permettant d’inclure les pièces jointes originales lors d’une réponse.

‘ auteur : Robert Sparnaaij
‘ version : 1.0
‘ site web : https://www.howto-outlook.com/howto/reply-with-attachments.htm
‘===============================================================================

Public WithEvents objInspectors As Outlook.Inspectors
Public WithEvents myOlExp As Outlook.Explorer
Public WithEvents myItem As Outlook.MailItem
Private DisableEvents As Boolean

Private Sub Application_Startup()
Initialiser le gestionnaire
End Sub

Public Sub Initialize_handler()
Set objInspectors = Application.Inspectors
Set myOlExp = Application.ActiveExplorer
DisableEvents = False
End Sub

Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector)
Dim objApp As Outlook.Application
Set objApp = Application

On Error Resume Next
Sélectionner le cas TypeName(objApp.ActiveWindow)
    Cas "Explorateur
        Set myItem = objApp.ActiveExplorer.Selection.Item(1)
    Cas "Inspecteur
        Set myItem = objApp.ActiveInspector.CurrentItem
End Select

Set objApp = Nothing

End Sub

Private Sub myOlExp_SelectionChange()
On Error Resume Next
Set myItem = myOlExp.Selection.Item(1)
End Sub

Private Sub myItem_Reply(ByVal Response As Object, Cancel As Boolean)

Appeler AddOriginalAttachmentsPrompt(Response, True)

End Sub

Sub privé myItem_ReplyAll(ByVal Response As Object, Cancel As Boolean)

Appeler AddOriginalAttachmentsPrompt (Response, True)

End Sub

Public Sub AddOriginalAttachmentsPrompt(ByVal Response As Object, Prompt As Boolean)
Si myItem.Attachments.Count > 0 et DisableEvents = False, alors

    Si Prompt = True Then
        strPrompt = "L'e-mail original contient des pièces jointes" & _
                    vbNewLine & "Voulez-vous les inclure dans votre réponse ?"
        Result = MsgBox(strPrompt, vbQuestion + vbYesNo + vbDefaultButton1, _
                        "Répondre avec les pièces jointes")
    Else
        Resultat = vbYes
    End If

    Si Resultat = vbYes Alors
        Appelez AddOriginalAttachments(Response)
    End If

End If

End Sub
Public Sub AddOriginalAttachments(ByVal Response As Object)
Set myAttachments = Response.Attachments

 Set fso = CreateObject("Scripting.FileSystemObject")
Set fldTemp = fso.GetSpecialFolder(2) ' Dossier temporaire de l'utilisateur
strPath = fldTemp.Path & "\"

Pour chaque pièce jointe dans myItem.Attachments
    strFile = strPath & Attachment.FileName
    Attachment.SaveAsFile strFile
    myAttachments.Add strFile, , , Attachment.DisplayName
    fso.DeleteFile strFile
Suivant

Set fldTemp = Rien
Set fso = Rien
Set myAttachments = Nothing

End Sub

Sub ReplyWithAttachments()

DisableEvents = True
Set myReply = myItem.Reply
Appeler AddOriginalAttachments(myReply)
myReply.Display
myItem.UnRead = False
DisableEvents = False
Set myReply = Nothing

End Sub

Sous ReplyAllWithAttachments()

DisableEvents = True
Set myReply = myItem.ReplyAll
Appel de AddOriginalAttachments(myReply)
myReply.Display
myItem.UnRead = False
DisableEvents = False
Set myReply = Nothing

End Sub

Modifications

Bouton Comment ? La macro permet quelques modifications faciles à mettre en œuvre.

Le code de la macro étant relativement long, il est préférable d’utiliser la fonction de recherche. Que vous regardiez ce code dans votre navigateur Internet, dans le Bloc-notes ou dans l’éditeur VBA d’Outlook, appuyez sur CTRL+F pour ouvrir la boîte de dialogue de recherche.

Modification 1 : faire de « Non » la valeur par défaut

Pour que « Non » soit la réponse par défaut dans l’invite, recherchez ;

vbQuestion + vbYesNo + vbDefaultButton1,

et changez-le en ;

vbQuestion + vbYesNo,

Modification 2 : Désactiver l’invite

Pour désactiver complètement l’invite et toujours joindre les pièces jointes originales, cherchez ;

Appeler AddOriginalAttachmentsPrompt(Response, True)

et changez-le en ;

Appeler AddOriginalAttachmentsPrompt(Response, False).

Macro VBA 2 : Commandes séparées Reply / Reply All avec pièces jointes

Bouton Visual BasicSi vous n’avez pas besoin de l’intégrer aux commandes par défaut Reply et Reply All d’Outlook, vous pouvez utiliser la macro VBA ci-dessous.

Le code de cette macro VBA est moins compliqué et plus facile à mettre en œuvre lorsque vous avez déjà d’autres codes et événements personnalisés dans votre module ThisOutlookSession.
Installation rapide

Suivez les instructions suivantes pour configurer la macro dans Outlook ;

Téléchargez ce fichier de code (replywithattachments.zip) et ou copiez le code ci-dessous.
Ouvrez l'éditeur VBA (raccourci clavier ALT+F11).
Extraire le fichier zip et importer le fichier ReplyWithAttachments.bas via Fichier-> Importer...
Si vous avez copié le code, collez-le dans un nouveau module.
Signez votre code afin de ne pas recevoir d'invites de sécurité et de ne pas désactiver la macro.
Ajoutez un bouton pour accéder facilement à la macro ou appuyez sur ALT+F8 et sélectionnez la macro que vous souhaitez exécuter.

Vous pouvez placer un bouton « Répondre avec pièces jointes » dans votre barre d’outils d’accès rapide pour accéder facilement à la macro.
Ajoutez un bouton de la macro dans le QAT ou le ruban pour y accéder rapidement.
Code de la macro

Le code suivant est contenu dans le fichier zip référencé dans l’installation rapide. Vous pouvez utiliser le code ci-dessous à des fins de révision ou d’installation manuelle.

Sub ReplyWithAttachments()
ReplyAndAttach (False)
End Sub

Sub ReplyAllWithAttachments()
ReplyAndAttach (True)
End Sub

Fonction GetCurrentItem() As Object
Dim objApp As Outlook.Application

Set objApp = Application
On Error Resume Next
Sélectionner le cas TypeName(objApp.ActiveWindow)
    Cas "Explorateur
        Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
    Cas "Inspecteur
        Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select

Set objApp = Rien

End Function

Public Sub AddOriginalAttachments(ByVal myItem As Object, ByVal myResponse As Object)
Set MyAttachments = myResponse.Attachments

Set fso = CreateObject("Scripting.FileSystemObject")
Set fldTemp = fso.GetSpecialFolder(2) ' Dossier temporaire de l'utilisateur
strPath = fldTemp.Path & "\"

Pour chaque pièce jointe dans myItem.Attachments
    strFile = strPath & Attachment.FileName
    Attachment.SaveAsFile strFile
    MyAttachments.Add strFile, , , Attachment.DisplayName
    fso.DeleteFile strFile
Suivant

Set fldTemp = Rien
Set fso = Rien
Set MyAttachments = Nothing

End Sub

Public Sub ReplyAndAttach (ByVal ReplyAll As Boolean)
Dim myItem As Outlook.MailItem
Dim oReply As Outlook.MailItem

Set myItem = GetCurrentItem()
If Not myItem Is Nothing Then

    Si ReplyAll = False Alors
        Set oReply = myItem.Reply
    Else
        Set oReply = myItem.ReplyAll
    End If

    AddOriginalAttachments myItem, oReply
    oReply.Display
    myItem.UnRead = False
End If

Set oReply = Rien
Set myItem = Nothing

End Sub

Add-in : ReplyWithAtt par IvaSoft

Bouton Add-InsUne autre approche serait de faire cela via un add-in.

ReplyWithAtt d’IvaSoft s’intègre aux commandes par défaut Reply et Reply All d’Outlook et modifie leur comportement pour inclure également la ou les pièces jointes d’origine.

Pour cette raison, le module complémentaire est très simple à utiliser. Il n’y a aucun changement visuel et rien ne doit être configuré une fois qu’il est installé ; il fonctionne directement à partir de la boîte !