Vue d'ensemble
Le Query Builder est la partie du composant WebPart Vitextra List Filter Online dans laquelle un éditeur de page définit le filtre prédéfini : l'ensemble des conditions que chaque élément doit satisfaire avant d'apparaître dans le composant WebPart. Les utilisateurs ne peuvent ni voir ni supprimer ce filtre ; ils ne font que restreindre davantage le résultat à l'aide du volet de filtre et des filtres d'en-tête de colonne.
Le filtre prédéfini est stocké sous la forme d'une arborescence de conditions et de groupes, puis traduit en une requête CAML que SharePoint exécute côté serveur. Rien n'est chargé dans le navigateur pour être filtré ensuite : la liste ne renvoie que les éléments correspondants, page par page, ce qui maintient la rapidité du composant WebPart sur les listes volumineuses.
Usages typiques du filtre prédéfini :
- Afficher uniquement les documents créés ou modifiés par l'utilisateur actuel.
- Afficher uniquement les enregistrements des 12 derniers mois sur une page de tableau de bord.
- Afficher uniquement les éléments approuvés, les éléments avec pièces jointes ou les éléments dont l'État n'est pas Fermé.
- Créer une page par service à partir d'une seule liste, sans créer un affichage par service.
📝 Remarque
Le Query Builder définit le filtre qui est toujours appliqué. Les contrôles que les utilisateurs voient dans le volet de filtre sont configurés séparément — voir KB10255. Contrôles du volet de filtrage et types de colonnes pris en charge dans List Filter Online.
Où trouver le Query Builder
- Ouvrez la page en mode édition et sélectionnez Modifier le composant WebPart sur le composant WebPart List Filter Online.
- Dans le volet de propriétés, faites défiler jusqu'au groupe Filtrer. L'étiquette Filtrer l'affichage : est suivie d'un aperçu du filtre actuel — Aucun filtre appliqué tant que rien n'est défini.
- Sélectionnez Modifier le filtre. Le Query Builder s'ouvre dans un grand panneau latéral.
- Construisez la requête, puis sélectionnez Enregistrer pour l'appliquer ou Annuler pour abandonner les modifications. Le composant WebPart s'actualise immédiatement avec le nouveau filtre.

Le Query Builder n'est disponible qu'une fois le site et la liste ou bibliothèque sélectionnés dans le groupe Source de données, car la liste des champs et leurs types proviennent de la liste sélectionnée.
Conditions et groupes
Une requête se compose de deux types de blocs.
- Une condition est une comparaison : champ — opérateur — valeur, par exemple
Amount— Est supérieur à —5000. Certains opérateurs ne nécessitent aucune valeur (Contient des données, Est L'Utilisateur Actuel, Aujourd'hui). - Un groupe contient des conditions et d'autres groupes et les relie par un seul opérateur logique — ET (chaque membre doit être vrai) ou OU (au moins un membre doit être vrai). Le bouton bascule sur le bord gauche du groupe permet de passer de l'un à l'autre.
Le panneau comporte toujours un groupe racine, qui ne peut pas être supprimé. Dans n'importe quel groupe, le bouton Ajouter propose deux commandes :
- Condition — ajoute une ligne vide au groupe actuel ;
- Groupe — ajoute un groupe imbriqué (ET par défaut) que vous remplissez de la même manière.
Les groupes peuvent être imbriqués jusqu'à dix niveaux de profondeur. Chaque ligne et chaque groupe imbriqué possède une icône de suppression à droite ; supprimer un groupe supprime tout son contenu.

La requête de la figure se lit ainsi : le Titre n'est pas vide et commence par « C » et (créé par moi ou modifié par moi) et (créé au cours de la dernière année ou modifié au cours de la dernière année) et (possède des pièces jointes, ou le Client est renseigné et le Montant est supérieur à 5 000).
💡 Astuce
Conservez le groupe racine en ET et placez chaque ensemble alternatif de conditions dans son propre groupe OU. Une requête structurée ainsi est facile à lire dans l'aperçu et facile à étendre par la suite.
Opérateurs par type de colonne
La liste des opérateurs d'une ligne dépend du type du champ sélectionné. Le tableau présente les opérateurs que le Query Builder propose pour chaque type de colonne pris en charge.
| Type de colonne | Opérateurs |
|---|---|
| Une seule ligne de texte, Plusieurs lignes de texte, Lien hypertexte ou image | Égal à, Est différent de, Commence par, Contient, Contient des données, Ne contient pas de données |
| Choix | Égal à, Est différent de, Commence par, Contient, Contient des données, Ne contient pas de données |
| Choix (valeurs multiples), Recherche, Calculée (résultat texte) | Égal à, Est différent de, Contient des données, Ne contient pas de données (la colonne Calculée propose aussi Commence par et Contient) |
| Nombre, Devise, ID | Égal à, Est différent de, Est supérieur à, Est supérieur ou égal à, Est inférieur à, Est inférieur ou égal à (la colonne Nombre propose aussi Contient des données, Ne contient pas de données) |
| Date et heure | Le, Pas le, Le Ou Après Le, Après, Le Ou Avant Le, Avant, doit être compris entre, Aujourd'hui, X Derniers Jours, X Dernières Semaines, X Derniers Mois, X Dernières Années, X Prochains Jours, X Prochaines Semaines, X Prochains Mois, X Prochaines Années, Contient des données, Ne contient pas de données |
| Oui/Non | Égal à, Est différent de, Contient des données, Ne contient pas de données |
| Pièces jointes | Égal à, Est différent de (valeur : Oui / Non) |
| Personne ou groupe | Égal à, Est différent de, Est L'Utilisateur Actuel, N'Est Pas L'Utilisateur Actuel, Contient des données, Ne contient pas de données |
| Métadonnées gérées (valeur unique et valeurs multiples) | Égal à, Est différent de, Contient, Ne contient pas, Contient des données, Ne contient pas de données |
| État d'approbation | Égal à, Est différent de (valeur : une liste d'états) |
| Évaluation, J'aime | Égal à, Est différent de, Contient des données, Ne contient pas de données (J'aime : Contient des données et Ne contient pas de données uniquement) |
Contient des données et Ne contient pas de données vérifient si la colonne possède une valeur, exactement comme IsNotNull et IsNull en CAML.
L'éditeur de valeur suit lui aussi le type de colonne : un sélecteur de date pour les dates (deux sélecteurs de date pour doit être compris entre), un champ numérique pour les nombres et les devises, un sélecteur de personnes pour Personne ou groupe, un sélecteur de termes pour Métadonnées gérées, une liste Oui / Non pour Oui/Non et Pièces jointes, une liste d'états pour État d'approbation, et une zone de texte pour les colonnes de texte, de choix et de recherche.
❗ Important
Les colonnes système et en lecture seule (par exemple ID de type de contenu, ID unique, Version ou Extrait par) ne sont pas proposées dans la liste des champs. Les colonnes dont le type ne peut pas être comparé en CAML — comme Image, Emplacement ou Périodicité — ne sont pas proposées non plus.
Conditions statiques et dynamiques
Une condition statique compare la colonne à une valeur fixe que vous saisissez : une date, un nombre, un texte, une personne. La valeur est écrite telle quelle dans la requête. doit être compris entre inclut les deux dates, au jour calendaire près ; si une seule des deux dates est renseignée, la condition devient un Le Ou Après Le ou un Le Ou Avant Le ouvert.
Une condition dynamique est résolue par SharePoint au moment de l'exécution de la requête, de sorte que la même page affiche des éléments différents selon l'utilisateur et le jour :
| Opérateur | Mode de résolution |
|---|---|
| Est L'Utilisateur Actuel / N'Est Pas L'Utilisateur Actuel | Compare la colonne de type personne à l'ID de l'utilisateur connecté (<UserID /> en CAML). |
| Aujourd'hui | Compare la colonne de date à la date du jour (<Today />). |
| X Derniers Jours / Dernières Semaines / Derniers Mois / Dernières Années | Une plage allant d'aujourd'hui moins X (jours, semaines, mois ou années) à aujourd'hui. |
| X Prochains Jours / Prochaines Semaines / Prochains Mois / Prochaines Années | Une plage allant d'aujourd'hui à aujourd'hui plus X. |
Le nombre de X Derniers et X Prochains se saisit dans le champ de valeur de la ligne. X Derniers Mois et X Dernières Années sont convertis en date de début au moment de la génération de la requête : une page configurée avec Modifié — X Dernières Années — 1 couvre donc toujours les douze derniers mois sans que personne ne modifie le filtre.
📝 Remarque
Les conditions dynamiques sont évaluées sur le serveur, dans le fuseau horaire du site. Un document modifié tard le soir peut donc être rattaché à un autre jour que celui indiqué par votre horloge locale.
Combinaison du filtre prédéfini et des filtres des utilisateurs
Lorsqu'un utilisateur applique un filtre dans le volet de filtre ou dans un en-tête de colonne, le composant WebPart ne remplace pas le filtre prédéfini. Il construit une nouvelle requête dans laquelle le filtre prédéfini et les filtres de l'utilisateur sont reliés par ET :
<Where>
<And>
<!-- le filtre prédéfini issu du Query Builder -->
<!-- les conditions sélectionnées par l'utilisateur dans le volet de filtre -->
</And>
</Where>
Conséquences à connaître :
- Les utilisateurs peuvent restreindre le résultat, mais jamais l'élargir au-delà du filtre prédéfini. Une page filtrée sur Créé par — Est L'Utilisateur Actuel n'affiche jamais les éléments d'une autre personne, quelle que soit la sélection de l'utilisateur dans le volet.
- Le tri, le regroupement, les totaux et l'export Excel s'appliquent tous au résultat combiné.
- Les filtres enregistrés et les liens vers un filtre (voir KB10253. Enregistrer des filtres et partager un lien vers un affichage filtré dans List Filter Online) ne stockent que la partie utilisateur de la requête. Le filtre prédéfini fait partie de la configuration de la page et voyage avec elle.
De l'arborescence au CAML
CAML, le langage de requête des listes SharePoint, n'admet que deux opérandes à l'intérieur de <And> et <Or>. Un groupe de trois membres ou plus ne peut donc pas s'écrire en un seul élément ; il doit être replié en une chaîne de paires imbriquées. Le Query Builder effectue ce repli pour vous, ainsi que les détails propres à chaque type : l'attribut Type de chaque valeur, LookupId pour les colonnes de recherche et IncludeTimeValue pour les comparaisons de dates.
La requête de la figure ci-dessus produit une clause <Where> d'environ 70 lignes. Son squelette — avec les comparaisons abrégées — se présente ainsi :
<Where>
<And>
<Or> <!-- créé par moi OU modifié par moi -->
<Eq><FieldRef Name="Author" /><Value Type="Integer"><UserID /></Value></Eq>
<Eq><FieldRef Name="Editor" /><Value Type="Integer"><UserID /></Value></Eq>
</Or>
<And>
<Or> <!-- créé au cours de la dernière année OU modifié au cours de la dernière année -->
<And> <Geq Created 2025-10-21 /> <Leq Created <Today /> /> </And>
<And> <Geq Modified 2025-10-21 /> <Leq Modified <Today /> /> </And>
</Or>
<And>
<Or> <!-- (client renseigné ET montant > 5000) OU possède des pièces jointes -->
<And> <IsNotNull Customer /> <Gt Amount 5000 /> </And>
<Eq Attachments 1 />
</Or>
<And> <IsNotNull Title /> <BeginsWith Title "C" /> </And>
</And>
</And>
</And>
</Where>
Chaque ligne X Dernières Années est devenue un <And> de deux comparaisons de dates, chaque groupe OU est devenu un élément <Or>, et les quatre membres du groupe racine ET sont devenus trois éléments <And> imbriqués.
Afficher la requête générée
Pour voir le CAML exact que le composant WebPart envoie — y compris le filtre prédéfini, les filtres utilisateur en cours, les champs de l'affichage, la limite de lignes et le regroupement :
- Dans le volet de propriétés, développez Outils de développement et activez Activer le mode Développeur.
- Enregistrez la page. Un menu d'outils de développement apparaît à l'extrémité droite de la barre de commandes du composant WebPart.
- Sélectionnez Requête CAML. La requête s'ouvre dans une boîte de dialogue et peut être copiée.

💡 Astuce
Désactivez de nouveau le mode Développeur une fois le filtre prêt. Le menu est visible par toutes les personnes qui voient le composant WebPart.
Filtres prédéfinis sur les listes volumineuses
Sur les listes de plus de 5 000 éléments, SharePoint n'exécute une requête que si la première condition qui restreint le résultat porte sur une colonne indexée. Le filtre prédéfini est le premier à s'exécuter : c'est donc lui qui décide si la page s'ouvre ou non.
- Commencez le groupe racine par une condition sur une colonne indexée (Créé, Modifié, Créé par, Modifié par et ID sont indexées par défaut ; les autres peuvent être indexées dans les paramètres de la liste).
- Privilégiez ET à la racine : un OU entre deux colonnes non indexées ne peut utiliser aucun index.
- Les conditions de date dynamiques (X Derniers Mois, Aujourd'hui) sont de bonnes premières conditions lorsque la colonne de date est indexée.
Les détails, l'avertissement d'index dans le configurateur de filtres et la création d'index en un clic sont décrits dans KB10257. Filtrer les listes volumineuses : colonnes indexées et seuil de 5 000 éléments.
Limitations
- Le Query Builder travaille avec les colonnes d'une seule liste ou bibliothèque — celle sélectionnée dans la source de données. Des conditions sur les colonnes d'autres listes ne sont pas possibles.
- Les valeurs de recherche et de choix sont comparées au texte que vous saisissez ; le Query Builder ne propose pas de sélecteur pour celles-ci.
- Un groupe imbriqué ne contenant aucune condition est ignoré lors de la génération de la requête.
- La profondeur d'imbrication maximale est de dix niveaux. En pratique, deux ou trois niveaux couvrent presque tous les scénarios ; une arborescence plus profonde est difficile à lire dans l'aperçu.
- Le filtre prédéfini n'est pas affiché aux utilisateurs. Si les utilisateurs doivent savoir pourquoi certains éléments manquent, indiquez-le dans le titre du composant WebPart ou sur la page.
Articles connexes
💡 Astuce
Les autres paramètres du volet de propriétés sont décrits dans KB10201. Configurer le composant WebPart List Filter Online ; les contrôles du volet de filtre dans KB10255. Contrôles du volet de filtrage et types de colonnes pris en charge dans List Filter Online ; les options de listes déroulantes en cascade dans KB10256. Filtres en cascade : restreindre les options des listes déroulantes selon les autres filtres sélectionnés. Pour une comparaison avec le composant WebPart Liste intégré, voir KB10321. List Filter Online et le composant WebPart Liste intégré : quelles différences ?.