Macro VBA Outlook : Déplacer automatiquement un e-mail vers un autre dossier

VBA - Visual Basic for Application

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.

Capture d'écran d'Outlook permettant de créer une règle
Créer une règle pour déplacer un courrier électronique vers un sous-dossier

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.

Capture d'écran de l'éditeur VBA du code VBA permettant de déplacer un e-mail vers un sous-dossier ou un dossier d'archivage.
Code VBA : Déplacer un e-mail vers un sous-dossier

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.

Capture d'écran des références nécessaires dans l'éditeur VBA
Définissez la bibliothèque requise sous Extras / Links

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *