---
title: "Query Builder de List Filter Online : conditions, groupes et requête CAML sous-jacente"
description: "Référence du Query Builder du composant WebPart Vitextra List Filter Online : où le trouver, comment fonctionnent les conditions et les groupes ET/OU, quels opérateurs sont disponibles pour chaque type de colonne, comment sont résolues les conditions dynamiques telles que Utilisateur actuel et X dernières années, comment le filtre prédéfini se combine aux filtres des utilisateurs et comment afficher la requête CAML générée."
url: https://vitextra.com/fr/support/kb/10320
language: fr
published: 2026-10-21
modified: 2026-10-21
products:
  - "List Filter Online"
author: "Lidija Reising"
tags: ["Query Builder List Filter Online", "générateur de requêtes CAML SharePoint", "filtre prédéfini composant WebPart liste SharePoint", "groupes de filtres ET OU SharePoint", "filtre dynamique utilisateur actuel", "filtre X derniers mois", "conditions de filtre imbriquées SharePoint Online", "afficher la requête CAML", "Vitextra List Filter Online"]
---

# Query Builder de List Filter Online : conditions, groupes et requête CAML sous-jacente

Référence du Query Builder du composant WebPart Vitextra List Filter Online : où le trouver, comment fonctionnent les conditions et les groupes ET/OU, quels opérateurs sont disponibles pour chaque type de colonne, comment sont résolues les conditions dynamiques telles que Utilisateur actuel et X dernières années, comment le filtre prédéfini se combine aux filtres des utilisateurs et comment afficher la requête CAML générée.

## 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](https://vitextra.com/fr/support/kb/10255).

---

## Où trouver le Query Builder

1. Ouvrez la page en mode édition et sélectionnez **Modifier le composant WebPart** sur le composant WebPart List Filter Online.
2. 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.
3. Sélectionnez **Modifier le filtre**. Le Query Builder s'ouvre dans un grand panneau latéral.
4. 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 groupe Filtrer du volet de propriétés avec l'aperçu du filtre et le bouton Modifier le filtre](https://static.vitextra.com/articles/10320/filter-group-property-pane-fr.png)
*Le groupe Filtrer du volet de propriétés avec l'aperçu du filtre et le bouton Modifier le 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.

![Une requête avec des groupes ET/OU imbriqués dans le Query Builder](https://static.vitextra.com/articles/10320/query-builder-nested-groups-fr.png)
*Une requête avec des groupes ET/OU imbriqués dans le Query Builder*

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](https://vitextra.com/fr/support/kb/10253)) 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 :

1. Dans le volet de propriétés, développez **Outils de développement** et activez **Activer le mode Développeur**.
2. Enregistrez la page. Un menu d'outils de développement apparaît à l'extrémité droite de la barre de commandes du composant WebPart.
3. Sélectionnez **Requête CAML**. La requête s'ouvre dans une boîte de dialogue et peut être copiée.

![La boîte de dialogue Requête CAML affiche la requête exacte envoyée à SharePoint](https://static.vitextra.com/articles/10320/caml-query-dialog-fr.png)
*La boîte de dialogue Requête CAML affiche la requête exacte envoyée à SharePoint*

💡 **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](https://vitextra.com/fr/support/kb/10257).

---

## 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](https://vitextra.com/fr/support/kb/10201) ; 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](https://vitextra.com/fr/support/kb/10255) ; 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](https://vitextra.com/fr/support/kb/10256). 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 ?](https://vitextra.com/fr/support/kb/10321).
