Bonjour,

Encore un code bien utile, que beaucoup de gens m'ont demandé en mariage grâce à lui (enfin grâce aux contributeurs).

L'idée : Nous échangeons beaucoup par mails, et dans le cadre d'études, projets, relance, contrats et autres joies administratives, nous sommes amenés à envoyer des mails types. J'en avais un peu assez de ne pas trouver de solutions satisfaisantes sur ce sujet, et de tourner autours du pot. J'ai fait des macros sous Excel, sous Outlook, mais rien de jouissif, et surtout qui ne m'empêchait pas de faire 75 clics entre ouvrir / répondre / Copier / Coller... J'avais bien des mails types sur un serveur de partage, avec des PJ dedans (ou bien des fenêtres de dialogue pour insérer des PJ), mais je savais qu'il y avait mieux à faire.

Et c'est là que je me suis dit Oliv- est mon champion !!

La solution : mettre dans un répertoire de partage des mails types sous format *.msg
Créer une macro en événement réponse au mail, qui va copier le contenu du mail type et le coller dans le mail de réponse. C'est ça qu'c'est beau ! Idem si mon explication est confuse vous pouvez m'insulter.

Here we are :

Premier code, mail type Sans Pièce Jointe :

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
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
 
Set NewWordEditor = MyNewMail.GetInspector.WordEditor
 
Numero = 1
 
Set oNamespace = Application.GetNamespace("MAPI")
 
Set LeMail = oNamespace.OpenSharedItem( _
  "\\Chemin\mailtypequidé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
LeMail.Close olDiscard

Même chose mais avec une fenêtre de dialogue afin d'incorporer une pièce jointe (et pour info, ne mettez pas de signature sur les mails types, par cette méthode vous reprendrez votre propre signature)

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
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\mailtypequidé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 PieceJointe As String
Set XL = CreateObject("Excel.Application")
 
PieceJointe = XL.GetOpenFilename()
 
Set myAttachments = MyNewMail.Attachments
myAttachments.Add PieceJointe 
LeMail.Close olDiscard
Enjoy,

Pet's