Pour simplifier et accélérer le travail avec de nombreux courriers, il est conseillé d’insérer quelques automatismes. C’est le cas, par exemple, si vous recevez beaucoup d’e-mails d’un certain type que vous souhaitez assigner automatiquement à un certain sous-dossier.
Exemple 1: Vous recevez beaucoup d’e-mails de votre boutique en ligne avec des commandes entrantes et vous voulez qu’ils soient automatiquement déplacés vers un dossier appelé « Commandes« .
Exemple 2: Vous souhaitez simplement déplacer certains courriels sélectionnés de la boîte de réception vers un dossier d’archivage en un seul clic.
Bien entendu, vous pouvez également utiliser les fonctions intégrées d’Outlook pour créer des règles automatiques. La capture d’écran suivante montre où les trouver.
Cependant, il existe certainement des cas d’utilisation où cet outil n’est pas tout à fait l’outil approprié de premier choix, par exemple si vous souhaitez bannir tous les courriels marqués vers un certain sous-dossier en un seul clic. Ou si vous disposez déjà d’une autre macro VBA, par exemple pour répondre automatiquement à un courriel, et que dans la même macro vous voulez marquer le courriel source comme lu et le déplacer ensuite de la boîte de réception vers un autre endroit.
Code VBA : Déplacer un courriel vers un sous-dossier
La capture d’écran et l’exemple de code suivants montrent comment déplacer un ou plusieurs courriels sélectionnés vers un sous-dossier de la boîte de réception.
Cet exemple de code parcourt tous les messages électroniques sélectionnés dans Outlook dans la boucle For Each et les déplace ensuite vers un dossier spécifié (« All Mails »), qui est un sous-dossier de la boîte de réception.
Public Sub MoveMail()
Dim olItem As Outlook.MailItem
Dim objNS As Outlook.NameSpace
Dim objs #0000ff ;">Dim objFolder As Outlook.MAPIFolder
Dim destFolder Comme Outlook.Folder
'Définir le dossier de destination ; dans ce cas, il s'agit de "All Mails", un sous-dossier de "Inbox".
Set objNS = GetNamespace("MAPI")
Set objFolder = objNS.Folders.GetFirst ' dossier de la boîte aux lettres actuelle.
Set objFolder = objFolder.Folders("Inbox")
Set destFolder = objFolder.Folders("All Mails")
'Déplacer tous les emails sélectionnés vers le sous-dossier défini.
Pour chaque olItem In Application.ActiveExplorer.Selection
olItem.Move destFolder
Suivant olItem
End Sub
Pour obtenir l’objet du sous-dossier, vous devez d’abord définir l’espace de noms Mapi (GetNamespace(« MAPI »)). Vous déterminez ensuite la boîte aux lettres concernée avec objNS.Folders.GetFirst. Nous utilisons GetFirst ici parce que la boîte aux lettres concernée se trouve en premier lieu dans Outlook. Si vous avez plusieurs boîtes aux lettres, vous pouvez soit naviguer vers elles avec GetNext, soit les adresser directement via l’index en utilisant .Item(number).
Définissez ensuite la boîte de réception comme un dossier et accédez à son tableau de dossiers pour définir le sous-dossier approprié de la boîte de réception. Il s’agit alors du dossier de destination vers lequel les courriels sélectionnés doivent être déplacés.
Veuillez noter que pour que le code fonctionne, plusieurs références doivent être activées sous Références.