Bouton de rechercheLa recherche indexée d’Outlook est rapide tant que vous connaissez le début exact du mot ou de la chaîne que vous recherchez.

Si vous ne souhaitez rechercher qu’une partie d’un mot, comme le milieu ou la fin, vous devrez utiliser la Recherche avancée, beaucoup plus fastidieuse.

Par exemple, lorsque vous recherchez « écrire », la recherche indexée d’Outlook ne trouvera que les messages contenant « écrire », mais la recherche avancée trouvera également « réécrire ».

Une situation similaire existe lors de la recherche de codes de produits ou de numéros de référence, car les gens pouvaient omettre les préfixes, les espaces ou les tirets.

Avec une macro Advanced Find, nous pouvons rendre ce type de recherche à nouveau rapide et facile.

Recherche avancée
Macro de recherche Advanced Find
Installation rapide
Code de la macro
Modifications
Avancé : Trouver les propriétés de l'espace de nom pour le filtre DASL

Recherche avancée

Bouton Recherche avancéeAvant de configurer la macro, voyons quelles actions nous devons effectuer si nous devons utiliser la recherche avancée sans macro.

Dans ce cas, nous allons rechercher une partie d’un mot dans le champ Sujet ou Corps du message.

Ouvrez la recherche avancée.
    Raccourci clavier : CTRL+SHIFT+F
    Ruban simplifié (Microsoft 365 et Outlook 2021)
    Cliquez dans le champ de recherche-> ... menu sur la droite-> Outils de recherche-> Recherche avancée...
    Ruban classique
    Cliquez dans le champ de recherche-> Outils de recherche-> Recherche avancée...
Sélectionnez l'onglet Avancé.
Ajoutez la recherche dans le champ Sujet ;
    Champ : Sujet
    Condition : Contient
    Valeur : <votre chaîne de recherche>
Cliquez sur le bouton "Ajouter à la liste".
Ajoutez la recherche dans le champ "Message Body" ;
    Champ : Message
    Condition : Contains
    Valeur : <votre chaîne de recherche>
Cliquez sur le bouton "Ajouter à la liste".
Cliquez sur le bouton "Rechercher maintenant".

Configuration d’une recherche avancée avec la condition « contains ».

Mise en place d’une recherche avancée avec la condition « contains ».

Cela fait beaucoup de clics et vous n’avez même pas spécifié dans quels dossiers chercher et s’il faut ou non inclure les sous-dossiers dans votre recherche.

Réduisons tout cela à un seul clic !

Macro de recherche avancée

Bouton Visual BasicLa macro de recherche avancée vous invite à saisir votre chaîne de recherche. Les résultats s’affichent dans un dossier de recherche personnalisé.

C’est tout !

Boîte de recherche de la macro de recherche avancée de mots partiels.

Une macro de recherche avancée rapide et propre.

Le fait que les résultats soient affichés dans un dossier de recherche présente l’avantage supplémentaire de vous permettre d’accéder au volet de lecture, comme dans le cas de la recherche instantanée.

En outre, vous pouvez utiliser les options de tri du dossier lui-même et même utiliser le champ de recherche ordinaire pour effectuer une recherche dans les résultats de la recherche.

De nombreuses modifications sont également possibles, mais voici les valeurs par défaut ;

Recherche dans les champs Objet et Corps du message.
Recherche dans les dossiers Boîte de réception et Éléments envoyés, ainsi que dans tous leurs sous-dossiers.
Les résultats sont affichés dans le dossier de recherche appelé : Macro de recherche

Conseil !
Votre requête de recherche elle-même est stockée dans le champ Description du dossier de recherche. Cliquez avec le bouton droit de la souris sur le dossier de recherche et choisissez Propriétés… pour l’afficher.

Installation rapide

Utilisez les instructions suivantes pour configurer la macro dans Outlook ;

Téléchargez ce fichier de code (partialwordsearch.zip) ou copiez le code ci-dessous.
Ouvrir l'éditeur VBA (raccourci clavier ALT+F11)
Extraire le fichier zip et importer le fichier PartialWordSearch.bas via Fichier-> Importer...
Si vous avez copié le code, collez-le dans un nouveau module.
Signez votre code afin de ne pas recevoir d'invites de sécurité et de ne pas désactiver la macro.
Ajoutez un bouton pour accéder facilement à la macro ou appuyez sur ALT+F8 et sélectionnez la macro que vous souhaitez exécuter.

Vous pouvez placer un bouton « Ouvrir dans le navigateur » dans votre barre d’outils d’accès rapide pour accéder facilement à la macro.
Ajoutez un bouton de la macro à la QAT pour un accès rapide à celle-ci.
Code de la macro

Le code suivant est contenu dans le fichier zip référencé dans l’installation rapide. Vous pouvez utiliser le code ci-dessous à des fins de révision ou d’installation manuelle.

‘===============================================================================
‘Description : Macro Outlook permettant de rechercher un mot partiel avec la recherche avancée.

‘ auteur : Robert Sparnaaij
‘ version : 1.0
‘ site web : https://www.howto-outlook.com/howto/partial-word-search.htm
‘===============================================================================

Sub SearchMacro()
On Error GoTo ErrorHandler
Dim strFrom As String
Dim strSearch As String
Dim strSearchFolderName As String

strSearchFolderName = "Macro de recherche".

Suppression du dossier de recherche "Macro de recherche" d'une recherche précédente
Dim oSearchFolders As Outlook.Folders
Dim oFolder As Outlook.Folder
Set oSearchFolders = Outlook.Session.DefaultStore.GetSearchFolders

Pour chaque oFolder dans oSearchFolders
    Si oFolder.Name = strSearchFolderName Alors
        oFolder.Delete
    End If
Suivant

Invitation à saisir la requête de recherche
strSearch = InputBox("Enter your search query : ", "Search Macro")

Recherche dans l'objet et le corps du message
Dim strDASLFilter As String
strDASLFilter = "urn:schemas:httpmail:subject LIKE '%" & strSearch & "%' OR " & _
                "urn:schemas:httpmail:textdescription LIKE '%" & strSearch & "%'".

Définissez la portée de la recherche sur la boîte de réception et les éléments envoyés (y compris les sous-dossiers).
Dim strScope As String
strScope = "'Inbox', 'Sent Items'".

Effectuer la recherche
Dim objSearch As Search
Set objSearch = Application.AdvancedSearch(Scope:=strScope, Filter:=strDASLFilter, SearchSubFolders:=True, Tag:="SearchFolder")

Enregistrer les résultats de la recherche dans un dossier de recherche
objSearch.Save (strSearchFolderName)

Ajouter la description et afficher le dossier de recherche dans la fenêtre Outlook actuelle
Set oSearchFolders = Outlook.Session.DefaultStore.GetSearchFolders
Pour chaque oFolder dans oSearchFolders
    Si oFolder.Name = strSearchFolderName Alors
        oFolder.Description = "Vous avez recherché : " & strSearch
        Set Application.ActiveExplorer.CurrentFolder = oFolder
    End If
Suivant

Set objSearch = Rien
Set oSearchFolders = Rien
Exit Sub

Traitement des erreurs

ErrorHandler :
MsgBox « Erreur :  » & Err & vbNewLine & vbNewLine & Error(Err)

End Sub

Modifications

Comment ? Comme vous pouvez avoir des besoins spécifiques pour votre recherche, il y a quelques éléments que vous pouvez vouloir modifier.

Vous trouverez ci-dessous quelques exemples qui vous permettront d’adapter la macro de recherche à vos besoins.

Modification 1 : Ajoutez des champs supplémentaires pour la recherche

Les champs à rechercher sont spécifiés ici ;

strDASLFilter = « urn:schemas:httpmail:subject LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:textdescription LIKE ‘% » & strSearch & « %' ».

Vous pouvez rechercher des champs sur Microsoft Docs ou utiliser cette méthode.

Pour rechercher dans tous les champs de texte « fréquemment utilisés », utilisez ;

strDASLFilter = « urn:schemas:httpmail:fromname LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:displayto LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:displaycc LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:subject LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:thread-topic LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:textdescription LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:messageflag LIKE ‘% » & strSearch & « %’ OR  » & _
« http://schemas.microsoft.com/mapi/received_by_name LIKE ‘% » & strSearch & « %’ OR  » & _
« http://schemas.microsoft.com/mapi/proptag/0x0044001f LIKE ‘% » & strSearch & « %’ OR  » & _
« http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8586001f LIKE ‘% » & strSearch & « %’ OR  » & _
« http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/85a4001f LIKE ‘% » & strSearch & « %’ OR  » & _
« http://schemas.microsoft.com/mapi/id/{00062041-0000-0000-C000-000000000046}/8904001f LIKE ‘% » & strSearch & « %' ».

Modification 2 : Spécifier les dossiers spécifiques dans lesquels effectuer la recherche

Les dossiers dans lesquels la recherche doit être effectuée sont spécifiés ici ;

strScope = « ‘Inbox’, ‘Sent Items' ».

Pour rechercher uniquement dans des dossiers spécifiques, vous devez spécifier le FolderPath exact du dossier.

Par exemple, pour effectuer une recherche dans le dossier Newsletter qui est un sous-dossier de votre dossier Inbox, utilisez ;

strScope = « ‘[email protected]\Inbox\Newsletters' »

Il est important de placer le nom du dossier entre guillemets simples et la chaîne entière entre guillemets doubles. Les dossiers individuels peuvent être séparés par une virgule.

Modification 3 : Recherche dans l’ensemble de la boîte aux lettres

Pour effectuer une recherche dans l’ensemble de la boîte aux lettres, recherchez

strScope = « ‘Inbox’, ‘Sent Items' »

et changez-le en ;

strScope = « ‘\' »

Comme cela renverra également tous les résultats autres que les e-mails, vous pouvez modifier le filtre de recherche pour ne rechercher que les e-mails ;

strDASLFilter = « (urn:schemas:httpmail:subject LIKE ‘% » & strSearch & « %’ OR  » & _
« urn:schemas:httpmail:textdescription LIKE ‘% » & strSearch & « %’) » & _
AND http://schemas.microsoft.com/mapi/proptag/0x001a001e = ‘IPM.Note' » & _ « AND http://schemas.microsoft.com/mapi/proptag/0x001a001e = ‘IPM.Note' ».

Modification 4 : Ouvrir les résultats de la recherche dans une nouvelle fenêtre Outlook

Si vous préférez ouvrir les résultats de la recherche dans une nouvelle fenêtre d’Outlook, recherchez les éléments suivants

Set Application.ActiveExplorer.CurrentFolder = oFolder

et le changer en

oFolder.Display

Avancé : Recherche des propriétés des espaces de noms pour le filtre DASL

Bouton de filtreComme nous l’avons mentionné, vous pouvez rechercher les propriétés des espaces de noms pour construire le filtre DASL sur Microsoft Docs.

Une autre façon de trouver comment construire le filtre DASL est d’utiliser la fonction Filtre de la boîte de dialogue View Settings.

Ouvrez la boîte de dialogue View Settings ;
    Ruban simplifié (Microsoft 365 et Outlook 2021)
    Affichage-> Vue actuelle-> Paramètres d'affichage...
    Ruban classique
    Affichage-> Paramètres d'affichage
Cliquez sur le bouton "Filtre...".
Utilisez l'onglet Avancé pour spécifier votre filtre basé sur les champs.
Sélectionnez l'onglet SQL pour voir le filtre DASL.
Vous pouvez activer la case à cocher "Editer..." pour copier/coller facilement le nom de la propriété.