QUERY extrait, filtre, trie et agrège des données avec une requête proche de SQL, mais avec ses propres règles. Je détaille sa syntaxe, ses clauses, les agrégations et les pièges de types ou d’en-têtes qui font disparaître des résultats.
Comment écrire une formule QUERY ?
Une formule QUERY reçoit une plage de données, une requête écrite sous forme de texte et, si nécessaire, le nombre de lignes d’en-tête. Sa syntaxe est =QUERY(données; requête; [en-têtes]). Le séparateur de formule peut varier selon les paramètres régionaux de votre fichier : certaines configurations utilisent des virgules à la place des points-virgules.

Chaque argument a un rôle précis :
- données désigne la plage analysée, par exemple A1:E100 ou A1:E pour couvrir les lignes disponibles.
- requête contient les instructions de sélection et de filtrage. Vous pouvez l’écrire entre guillemets dans la formule ou la stocker dans une cellule, puis référencer cette cellule.
- en-têtes indique le nombre de lignes d’en-tête au début de la plage. Si vous omettez cet argument ou indiquez -1, Sheets tente de déduire ce nombre. Cette déduction peut être ambiguë ; une valeur explicite est plus prévisible.
Dans la requête, les identifiants de colonnes ne sont pas forcément les libellés visibles dans votre tableau. Vous pouvez utiliser A, B ou Col1, Col2. Avec Col1, la première colonne désigne la première colonne de la plage fournie, même si celle-ci commence en C ou en F. Il faut donc raisonner par rapport à la plage, pas uniquement aux lettres de la feuille.
Formez-vous à Google Sheets !
Nos formations Google Sheets vous accompagnent pour passer d’une utilisation basique à une vraie expertise en manipulation de données. Vous apprendrez à structurer, analyser et automatiser vos feuilles de calcul pour en faire des outils puissants et adaptés à vos besoins métiers. Fonctions avancées, requêtes dynamiques, visualisation pertinente.
Par exemple, cette formule renvoie les colonnes A et C pour les lignes où la colonne E contient « Oui » : =QUERY(A1:E; « select A, C where E = ‘Oui' »; 1). Le dernier argument indique que la première ligne de A1:E contient les en-têtes. Les apostrophes autour de Oui sont nécessaires dans la requête, elle-même placée entre guillemets doubles dans la formule.
La requête ressemble à SQL, le langage d’interrogation de bases de données, mais QUERY n’implémente pas tout SQL et suit ses propres règles. Une fois la syntaxe de la formule comprise, ce sont les clauses qui déterminent les opérations effectuées sur les données ; c’est le sujet du chapitre suivant.
Quelles clauses QUERY faut-il connaître ?
Les clauses de QUERY sélectionnent, filtrent, regroupent, trient et mettent en forme le résultat. Elles suivent un ordre défini : select, where, group by, pivot, order by, limit, offset, label, format, options. QUERY s’inspire du langage SQL, mais ne prend pas en charge toutes ses fonctions.

Chaque clause a un rôle précis :
- select choisit les colonnes à afficher, par exemple select A, C.
- where filtre les lignes, par exemple where B = ‘Paris’.
- group by regroupe les lignes selon une ou plusieurs colonnes. pivot transforme les valeurs d’une colonne en colonnes de résultat.
- order by trie le résultat. order by C asc classe les valeurs dans l’ordre croissant ; order by C desc, dans l’ordre décroissant. asc est la valeur par défaut.
- limit restreint le nombre de lignes retournées. offset ignore des lignes au début du résultat.
- label renomme un libellé de colonne, par exemple label C ‘Ville’. format applique un format d’affichage à une colonne, par exemple format C ‘dd/MM/yyyy’.
- options définit des options de requête, comme le traitement des valeurs nulles.
Les conditions peuvent se combiner avec and et or. Par exemple, where B = ‘Paris’ and E = ‘Oui’ exige que les deux conditions soient vraies. Avec or, une seule condition doit l’être.
Voici une requête complète sur une plage dont la première ligne contient les en-têtes :
=QUERY(A1:E; "select A, C where E = 'Oui' order by C desc"; 1)La requête sélectionne A et C, conserve les lignes où E vaut « Oui », puis trie C par ordre décroissant. Les clauses s’enchaînent dans l’ordre général de QUERY ; les clauses inutilisées sont simplement omises. Une fois ces filtres et tris maîtrisés, les agrégations permettent de produire des résultats synthétiques, par exemple des totaux par catégorie.
Comment regrouper et agréger des données ?
Pour obtenir une synthèse par catégorie, j’utilise group by : cette clause regroupe les lignes qui partagent la même valeur dans une ou plusieurs colonnes. Elle s’emploie généralement avec une agrégation, qui calcule une valeur pour chaque groupe.
Google Sheets documente cinq agrégations courantes dans QUERY :
- avg calcule la moyenne.
- count compte les valeurs du groupe.
- max renvoie la valeur maximale.
- min renvoie la valeur minimale.
- sum calcule la somme.
Voici un total par catégorie, avec les catégories en colonne A et les montants en colonne C :

=QUERY(A1:C; "select A, sum(C) group by A label sum(C) 'Total'"; 1)Chaque partie a un rôle précis :
- select A, sum(C) choisit la catégorie et calcule la somme des montants.
- group by A rassemble les lignes ayant la même catégorie. Le résultat contient une ligne par valeur distincte de A.
- label sum(C) ‘Total’ remplace l’intitulé généré pour la somme par le libellé « Total ».
La clause pivot transforme les valeurs distinctes d’une colonne en colonnes du résultat. Elle permet, par exemple, de ventiler les totaux par catégorie et par valeur de la colonne B :
=QUERY(A1:C; "select A, sum(C) group by A pivot B"; 1)Ici, les valeurs distinctes de B deviennent des colonnes, et chaque cellule contient la somme de C pour la combinaison correspondante. Le résultat dépend donc directement des valeurs présentes dans vos données.
Les lettres de colonnes, leur contenu et le nombre d’en-têtes indiqué à la fin de la formule doivent correspondre à votre plage réelle. Une colonne de montants interprétée comme du texte, ou un nombre d’en-têtes incorrect, peut fausser une agrégation. C’est le point à vérifier avant d’interpréter les résultats : la fiabilité de QUERY dépend aussi des types de données et des en-têtes, sujets du chapitre suivant.
Pourquoi QUERY ignore-t-elle certaines valeurs ?
Des valeurs peuvent être ignorées par QUERY parce qu’une colonne mélange plusieurs types, parce que la plage ou le nombre d’en-têtes est mal défini, ou parce que la requête ne cible pas les bonnes colonnes. Je vérifie d’abord ces trois points avant de modifier la formule.
Dans une même colonne, Google Sheets peut rencontrer des valeurs booléennes, numériques — les dates et les heures sont aussi traitées comme des valeurs numériques — ou textuelles. Si plusieurs types sont mélangés, le type majoritaire détermine le type retenu pour la colonne. Les valeurs des types minoritaires sont alors considérées comme nulles par QUERY.
Ce traitement peut modifier le résultat d’un filtre ou d’une agrégation. Une valeur minoritaire peut ne pas apparaître dans les lignes retenues par une condition. Elle peut aussi ne pas contribuer à une opération d’agrégation. Si le résultat semble incomplet, vérifiez le type réel des cellules concernées, pas seulement leur affichage : une date formatée et un texte qui lui ressemble ne sont pas nécessairement du même type.
Le troisième argument de QUERY indique le nombre de lignes d’en-tête dans la plage. Quand la première ligne contient les noms des colonnes, renseigner explicitement 1 évite que QUERY interprète cette ligne comme une ligne de données. Cet argument accepte aussi un nombre supérieur à 1 si la plage contient plusieurs lignes d’en-tête. Une valeur incorrecte peut décaler l’interprétation de la plage et conduire à interroger les mauvaises colonnes.
Avant de conclure à un problème de formule, je vérifie :
- La plage : elle inclut les données attendues et ne commence pas sur une mauvaise ligne.
- Les colonnes : les références utilisées dans la requête correspondent bien à la plage.
- Le nombre d’en-têtes : il correspond au nombre réel de lignes d’en-tête.
- Les types : les valeurs d’une même colonne sont cohérentes.
- Les guillemets : les critères textuels sont encadrés correctement dans la requête.
Si ces vérifications ne suffisent pas, le chapitre suivant présente une méthode de dépannage progressive pour isoler l’origine du résultat inattendu.
Comment dépanner une formule QUERY ?
Pour dépanner QUERY, vérifiez d’abord la plage et les en-têtes, puis testez une requête minimale avant d’ajouter les opérations une par une. Une formule QUERY peut renvoyer une erreur, mais aussi un résultat incomplet si la plage, les colonnes ou les types de données sont mal interprétés.

Commencez avec une sélection simple, puis complexifiez seulement quand chaque étape fonctionne.
- Testez la plage : utilisez une requête minimale comme QUERY(A1:D100; « select A »; 1). Vérifiez que la plage contient bien les données attendues et que le dernier argument correspond au nombre de lignes d’en-tête. Ici, 1 signifie que la première ligne contient les en-têtes.
- Ajoutez le filtre : par exemple, QUERY(A1:D100; « select A where B = ‘Paris' »; 1). La requête complète est une chaîne entre guillemets doubles dans la formule. Une valeur textuelle recherchée, comme Paris, est entourée d’apostrophes à l’intérieur de la requête.
- Ajoutez ensuite le tri, puis les agrégations : insérez order by ou group by une clause à la fois. Si le résultat se dégrade, la dernière clause ajoutée est le premier point à contrôler.
Vérifiez aussi que les identifiants de colonnes correspondent à la plage. Pour une plage qui commence en A, les lettres A, B, C correspondent aux colonnes de la feuille. Si la plage commence ailleurs, comme C1:F100, utilisez plutôt Col1, Col2, etc. Ces identifiants désignent les colonnes dans la plage, pas leurs lettres dans la feuille.
Le séparateur entre les arguments de la formule dépend des paramètres régionaux : votre feuille peut attendre un point-virgule plutôt qu’une virgule. Si certaines valeurs semblent disparaître, inspectez les types mélangés dans la colonne. QUERY déduit un type majoritaire ; les valeurs d’un type minoritaire peuvent être traitées comme nulles, donc ignorées dans les filtres ou les agrégations.
À contrôler en priorité : plage, en-têtes, identifiants de colonnes, guillemets, séparateur régional et types de données. QUERY utilise un langage proche de SQL, mais avec ses propres clauses et règles : une syntaxe SQL valide n’est pas forcément une requête QUERY valide.
Que retenir pour exploiter QUERY sereinement ?
QUERY permet de produire des vues ciblées et des synthèses directement dans Google Sheets : sélection, filtres, tri, regroupements et pivots. Pour obtenir des résultats fiables, je vérifie la plage, les identifiants de colonnes et le nombre d’en-têtes avant de complexifier la requête. Les guillemets doivent être correctement imbriqués, et les colonnes mélangées peuvent rendre certaines valeurs nulles selon le type majoritaire. Je construis donc mes requêtes progressivement et je garde en tête que QUERY ressemble à SQL sans en reprendre tout le langage. Vous gagnez ainsi du temps sur l’analyse et des résultats plus faciles à contrôler.
FAQ
-
À quoi sert la fonction QUERY dans Google Sheets ?
Elle interroge une plage pour sélectionner, filtrer, trier, regrouper ou agréger des données, et peut transformer des valeurs en colonnes avec `pivot`. -
Quelle est la syntaxe de QUERY ?
La syntaxe est `=QUERY(données; requête; [en-têtes])`. Le séparateur de formule peut varier selon les paramètres régionaux de la feuille. -
QUERY est-elle identique à SQL ?
Non. Sa syntaxe ressemble à SQL, mais QUERY utilise le langage de requête Google Visualization API et ses propres clauses et règles. -
Pourquoi QUERY ne renvoie-t-elle pas certaines valeurs ?
Une colonne contenant plusieurs types peut être interprétée selon son type majoritaire. Les valeurs des types minoritaires sont alors considérées comme nulles. Vérifiez aussi la plage et le nombre d’en-têtes. -
Comment utiliser les colonnes Col1 et Col2 ?
Ces identifiants désignent les colonnes relativement à la plage. Col1 correspond à sa première colonne, même si la plage commence ailleurs que dans la colonne A.
A propos de l’auteur
Je suis Franck Scandolera, expert en data engineering. J’aide les équipes à structurer et exploiter leurs données, notamment avec Google Sheets et des traitements automatisés, pour fiabiliser l’analyse et accélérer la prise de décision.
⭐ Analytics engineer, Data Analyst et Automatisation IA indépendant ⭐
Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
Data Analyst & Analytics engineering : tracking avancé (GA4, Matomo, Piano, GTM server, Tealium, Commander Act, e-commerce, CAPI, RGPD), entrepôt de données (BigQuery, Snowflake, PostgreSQL, ClickHouse), modèles (Airflow, dbt, Dataform), dashboards décisionnels (Looker, Power BI, Metabase, SQL, Python).
Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.





