#SysAdmin #NetAdmin

Outlook – Différer la livraison automatiquement

O

Par défaut la remise des messages dans Outlook est instantanée, mais si on a l’habitude de travailler en dehors des heures habituelles il est possible de différer la livraison des messages pour ne pas déranger les collègues.

Pour ne pas devoir le faire manuellement à chaque message, il est possible de l’automatiser à l’aide d’un morceau de code VBA. Ainsi dès qu’un message est envoyé après l’heure de fin de journée spécifiée celui-ci est retardé au lendemain et pour le week-end le message est même retardé jusqu’au lundi matin.

Ajout du code VBA

  1. Ouvrir Outlook
  2. Appuyer sur les touches « Alt » + « F11 » du clavier pour ouvrir la fenêtre VBA
  3. Double clique sur « Projet 1 » > « Microsoft Outlook Objects » > « ThisOutlookSession » pour ouvrir la fenêtre d’ajout/édition du code
  4. Saisir le code suivant :
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'Updated by Extendoffice & EWP 20230602
  Const xDelayTime As String = "07:30:00"  'The delay delivery time of emails
  Const xCompareTime As String = "18:30:00" 'The time to enable the delay delivery option
  Dim xMail As Outlook.MailItem
  Dim xWeekday As Integer
  Dim xNowTime As String
  Dim xIsDelay As Boolean
  Dim xRet1 As Integer
  Dim xRet2 As Integer
  On Error GoTo xError
  If (Item.Class <> olMail) Then Exit Sub
  Set xMail = Item
  If xMail.Importance = olImportanceHigh Then Exit Sub 'Exclude emails with a high importance flag
  xWeekday = Weekday(Date, vbMonday)
  xNowTime = Format(Now, "hh:nn:ss")
  xIsDelay = False
  xRet1 = StrComp(xNowTime, xDelayTime)
  xRet2 = StrComp(xNowTime, xCompareTime)
  If xRet1 = xRet2 Then
    xIsDelay = True
  End If
  If (xRet1 = -1) And (xRet2 = -1) Then
    xMail.DeferredDeliveryTime = Date & " " & xDelayTime
  Else
    If ((xWeekday = 5) And xIsDelay) Or (xWeekday = 6) Or (xWeekday = 7) Then
      xMail.DeferredDeliveryTime = (Date + (5 - xWeekday + 3)) & " " & xDelayTime
    ElseIf xIsDelay Then
      xMail.DeferredDeliveryTime = (Date + 1) & " " & xDelayTime
    End If
  End If
Exit Sub
xError:
  MsgBox "ItemSend: " & Err.Description, , "Kutools for Outlook"
End Sub
  1. Au besoin il faut ajuster les variables xDelayTime (heure de remise pour le lendemain) et xCompareTime (heure à partir de laquelle cela s’active)
  2. Sauvegarder et fermer la fenêtre VBA

Autoriser les macros

Outlook n’autorise pas les macros par défaut ce qui fait que le code ci-dessus ne fonctionnera pas, il faut donc activer les macros dans les options.

  1. Fichier > Options
  2. Centre de gestion de la confidentialité > Paramètres du Centre de gestion de la confidentialité…
  3. Paramètres des macros
  4. Cocher « Activer toutes les macros (non recommandé, exécution possible de code potentiellement dangereux) »
  5. Redémarrer Outlook pour que le changement soit pris en compte

Conclusion

Il est maintenant possible d’envoyer des messages à des heures de travail moins conventionnelles sans se préoccuper de savoir si on va déranger ses collègues.

Bien évidemment il est toujours possible de forcer la remise d’un message qui aurait une nécessité d’urgence. Il suffit de cliquer sur le bouton « Importante haute » dans le message puis lors de l’appui sur le bouton « Envoyer » le message sera remis tout de suite.

Dernier conseil : il est intéressant d’ajouter le champ « Différer jusqu’au » dans l’affichage de la boite d’envoi pour se souvenir au fil du temps pourquoi les messages restent dedans.

  1. Boite d’envoi
  2. Clique droit sur la barre de champs > Sélecteur de champs
  3. Dans la nouvelle fenêtre, sélectionner « Champs Date/Heure » au niveau du menu déroulant
  4. Cliquer sur « Différer jusqu’au » et le déplacer dans la barre de champs à l’emplacement souhaité
  5. Fermer la fenêtre de sélecteur de champs
par Nathan
#SysAdmin #NetAdmin