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 !
Salut,
Merci pour cette méthodes très efficaces.