Est-il possible de faire en sorte qu'Outlook 2010 active la fonction "Réponses automatiques" lorsque je ferme l'application ? J'aime bien activer la fonction "Out of Office" à la fin de la journée, mais dans la précipitation, on l'oublie facilement.
Réponses
Trop de publicités?J'ai VRAIMENT essayé de faire en sorte que cela fonctionne pour vous, mais j'ai appris qu'Outlook 2010 ne supporte plus le CDO 1.2.1, et n'étant pas un programmeur, je n'avais pas les connaissances approfondies pour le coder d'une autre manière. Bien que non supporté et non recommandé par Microsoft (pourquoi le mentionnent-ils alors ??), il est possible d'installer CDO si vous avez Outlook 2007, avant de mettre à jour vers Outlook 2010.
http://support.microsoft.com/kb/2028411
Je vais publier comment faire cela dans Outlook 2003/2007 au cas où quelqu'un tomberait sur ce problème. Je viens de le tester. Je vais également publier les autres étapes pour Outlook 2010 en supposant que vous puissiez corriger le code.
Pour Outlook 2003/2007
-
Pour Outlook 2007 uniquement, vous devez installer CDO ou le code échouera : http://www.microsoft.com/downloads/en/details.aspx?familyid=2714320d-c997-4de1-986f-24f081725d36&displaylang=en
-
En supposant que la politique de groupe de votre entreprise ne l'emporte pas, changez la sécurité en
Tools
Macros
Security
aNo Security Check for macros
. -
Aller à
Tools
Macros
Visual Basic Editor
. -
Cliquez sur l'icône Visual Basic, puis appuyez sur F2 pour ouvrir le navigateur d'objets.
-
Dans le nouveau projet, dans le volet de gauche, développez-le jusqu'à ce que vous voyez
ThisOutlookSession
et double-cliquez dessus. -
Coupez et collez le code suivant dans la fenêtre de code qui vient de s'ouvrir et enregistrez-le :
Private Sub Application_Quit() Dim objMAPISession As Object Set objReminders = Nothing If MsgBox("Would you like to turn the Out of Office Assistant on?", vbYesNo, "Activate Out of Office Assistant") = vbYes Then Set objMAPISession = CreateObject("MAPI.Session") objMAPISession.Logon , , True, False objMAPISession.OutOfOffice = True objMAPISession.Logoff End If Set objMAPISession = Nothing End Sub
-
Fermez et ouvrez Outlook.
-
Il vous donnera un message sur les macros. Activez-les.
Pour Outlook 2010
Si vous pouvez réparer le code Voici les étapes à suivre pour Outlook 2010. Je les inclus parce que l'emplacement de nombreux éléments a changé, et pourrait être difficile à trouver. Dans le code actuel, je signale également l'étape qui échoue.
-
En supposant que la politique de groupe de votre entreprise ne l'emporte pas, changez la sécurité en
File
Options
Trust Center
Trust Center Settings
Macro Settings
aEnable all macros
. -
Commencez par activer le
Developer
onglet dansFile
Options
Customize Ribbon
, vérifierDeveloper
dans la colonne de droite. -
Cliquez sur l'icône Visual Basic, puis appuyez sur F2 pour ouvrir le navigateur d'objets.
-
Aller à
Classes
(colonne de gauche)ThisOutlookSession
et double-cliquez dessus. -
Coupez et collez le code suivant dans la fenêtre de code qui vient de s'ouvrir et enregistrez-le :
Private Sub Application_Quit() Dim objMAPISession As Object Set objReminders = Nothing If MsgBox("Would you like to turn the Out of Office Assistant on?", vbYesNo, "Activate Out of Office Assistant") = vbYes Then Set objMAPISession = CreateObject("MAPI.Session") THIS IS THE STEP THAT FAILS objMAPISession.Logon , , True, False objMAPISession.OutOfOffice = True objMAPISession.Logoff End If Set objMAPISession = Nothing End Sub
-
Fermez et ouvrez Outlook.
-
Retournez à la
Developer
ongletMacros
icône. Il vous donnera un message sur les macros. Activez-les.
Une autre façon de contourner ce problème (car je ne pense pas que vous puissiez modifier les paramètres de date et d'heure de l'assistant d'absence du bureau via VBA) consiste à effectuer les étapes suivantes :
- Créez une règle dans "Règles et alertes" pour l'arrivée d'un message et faites en sorte que cette règle réponde automatiquement à tous les e-mails où vous figurez dans la partie "À" de l'e-mail.
- Définissez la règle pour répondre en utilisant "demander au serveur de répondre en utilisant un message spécifique".
- Remplissez le "message spécifique" avec un modèle de réponse standard (exemple approximatif : Cher client, je suis actuellement au bureau. Les heures de travail sont de 8h à 17h. Je vous répondrai rapidement à mon retour. Je vous prie d'agréer, <-insérer la signature->, mes salutations distinguées. )
- Nommez la règle "HomeTime" (ou quelque chose de significatif - cela sera nécessaire pour le code vba ci-dessous).
- Modifiez la sécurité de vos macros VBA dans Outlook pour permettre l'exécution des macros de manière appropriée.
- Incluez le code suivant qui s'exécute pendant
Application_Start
yApplication_Quit
pour activer/désactiver la règle :
Option Explicit Private Sub Application_Quit() SetRuleEnabled True End Sub Private Sub Application_Startup() SetRuleEnabled False End Sub Private Sub SetRuleEnabled(ByVal bEnable As Boolean) Dim oSession As Outlook.NameSpace Dim oRule As Outlook.Rule Dim oRules As Outlook.Rules Dim oPA As Outlook.PropertyAccessor Set oSession = Application.Session Set oRules = oSession.DefaultStore.GetRules() Set oPA = oSession.DefaultStore.PropertyAccessor '*** If the Out-Of-Office is already on (eg. holidays, sick leave etc.) '*** then it might be best to force this rule permanently off If oPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B") Then bEnable = False End If For Each oRule In oRules If oRule.Name = "HomeTime" Then oRule.Enabled = bEnable oRules.Save Exit For End If Next End Sub
Il faut garder à l'esprit que cette réponse sera déclenchée à chaque fois pour chaque réponse suivante. Contrairement à l'assistant Out-Of-Office qui ignore les réponses ultérieures.
PS. Avec la vérification d'Out of Office dans le VBA ci-dessus, vous aurez besoin d'une référence à la bibliothèque CDO. Si vous ne voulez pas vérifier si Out-Of-Office est activé, alors vous n'aurez pas besoin de CDO.
Génial ! Merci KCotreau. J'ai réussi à le faire fonctionner sur MS Outlook 2003. Voici l'extrait de code - je l'ai juste enveloppé dans le pré et le code pour ne pas tout avoir sur une seule ligne.
Private Sub Application_Quit()
Dim objMAPISession As Object
Set objReminders = Nothing
If MsgBox("Would you like to turn the Out of Office Assistant on?", vbYesNo, "Activate Out of Office Assistant") = vbYes Then
Set objMAPISession = CreateObject("MAPI.Session")
objMAPISession.Logon , , True, False
objMAPISession.OutOfOffice = True
objMAPISession.Logoff
End If
Set objMAPISession = Nothing
End Sub
C'est bien, mais est-il possible de le faire fonctionner à une date/heure ultérieure ? Ce serait un vrai plus, car si vous avez prévu de partir en vacances et que vous oubliez d'activer le système OOF, il se déclenchera automatiquement sans intervention humaine... hein ?