Bonjour,
J'ai fait une macro qui, sous certaines conditions, modifie l'e-mail en cours de rédaction : changement de destinataire, changement de signature et diverses modification sur le Body. Cette macro est appelée manuellement par un bouton ajouté sur la barre d'outils Nouveau Courrier, et tout fonctionne bien.
J'essaie maintenant de faire un déclenchement automatique à chaque fois qu'on répond à un e-mail remplissant certaines conditions. Je me suis inspiré de cette discussion et le déclenchement se passe bien, ainsi que le changement de destinataire. Par contre, toutes les modifications que ma macro fait sur le Body sont ignorées, sans pour autant déclencher d'erreur. Je constate également que tout se passe en invisible, et que toute tentative de mettre un Display dans l'une ou l'autre macro déclenche une erreur d'exécution.
J'ai l'impression que, d'une manière ou d'une autre, l'événement se déclenche trop tôt... Quelqu'un connaît-il une parade à ce problème ?
Voici la partie pertinente de ma macro, telle qu'elle fonctionnait en manuel :
Pour implémenter le déclenchement événementiel, j'ai mis ça dans ThisOutlookSession :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Sub ReponseManga() Dim M As MailItem Set M = Application.ActiveInspector.CurrentItem M.To = "nouveau destinataire" M.Recipients.ResolveAll M.Body = Replace(M.Body, "phrase à supprimer", "") End Sub
Et j'ai modifié le début de ma macro ainsi :
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 Dim WithEvents objInspectors As Outlook.Inspectors Dim WithEvents objMailItem As Outlook.MailItem Private Sub Application_Startup() Initialize_Handler End Sub Sub Initialize_Handler() Set objInspectors = Application.Inspectors End Sub Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector) If Inspector.CurrentItem.Class = olMail Then Set objMailItem = Inspector.CurrentItem If objMailItem.Sent = False Then If objMailItem.To Like "*critère*" Then ReponseManga objMailItem End If End If End If End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub ReponseManga(Optional M As MailItem) If M Is Nothing Then ' appel depuis la barre d'outils Set M = Application.ActiveInspector.CurrentItem End If 'idem pour la suite
Partager