Fonction QUERYInterroge tes données avec du SQL – Guide 2026
QUERY est sans doute la fonction la plus puissante de Google Sheets. Elle te permet d'interroger tes données avec une syntaxe SQL, transformant instantanément ta feuille de calcul en véritable base de données relationnelle. Si tu maîtrises QUERY, tu peux dire adieu aux dizaines de formules imbriquées complexes.
Que tu aies besoin de filtrer des milliers de ventes par région, d'extraire les employés d'un département avec des critères multiples, d'agréger des données financières par catégorie ou de créer des tableaux croisés dynamiques en une seule formule, QUERY est ton meilleur allié. C'est l'outil indispensable pour tout professionnel manipulant de grands volumes de données dans Google Sheets.
Syntaxe
QUERY(données; requête; en_têtes)La plage de cellules contenant les données à interroger. Peut être une référence directe (A1:D100), une autre fonction retournant un tableau (IMPORTRANGE, FILTER...), ou même une combinaison de plusieurs plages.
La requête SQL à exécuter, entre guillemets. Utilise les clauses SELECT, WHERE, ORDER BY, GROUP BY, PIVOT, LIMIT et LABEL. Les colonnes se référencent par leurs lettres (A, B, C) ou par Col1, Col2, Col3. Pour les valeurs textuelles dans la requête, utilise des guillemets simples \'.
Nombre de lignes d'en-tête dans tes données : -1 pour laisser Google Sheets deviner automatiquement, 0 si aucune ligne d'en-tête, 1 ou plus pour le nombre exact de lignes d'en-tête. Par défaut, Google Sheets essaie de deviner intelligemment.
Valeur de retour : Un tableau de données correspondant au résultat de ta requête SQL. Le tableau peut contenir une ou plusieurs colonnes et autant de lignes que nécessaire selon ta requête et tes critères de filtrage.
Comprendre chaque paramètre
données
(obligatoire)La source de données à interroger
Le paramètre données définit la plage de cellules que tu veux interroger. C'est l'équivalent de la clause FROM en SQL classique. Tu peux utiliser une simple référence de plage comme A1:E100, ou des fonctions plus avancées qui retournent des tableaux.
Google Sheets traite cette plage comme une table de base de données où chaque colonne représente un champ et chaque ligne représente un enregistrement. La première ligne peut contenir des en-têtes (selon le paramètre en_têtes), et toutes les lignes suivantes sont considérées comme des données.
Astuce pro : Tu peux utiliser IMPORTRANGE comme source de données pour interroger des feuilles dans d'autres classeurs : =QUERY(IMPORTRANGE("URL"; "Plage"); "SELECT Col1, Col2...")
requête
(obligatoire)La requête SQL pour manipuler les données
Le paramètre requête est le cœur de la fonction QUERY. C'est ici que tu écris ta requête SQL en utilisant le Google Visualization API Query Language, une version simplifiée de SQL spécialement conçue pour les feuilles de calcul.
Les colonnes se référencent par leurs lettres (A, B, C...) relatives à ta plage de données, ou par Col1, Col2, Col3... Tu peux sélectionner des colonnes spécifiques, les trier, les filtrer avec des conditions complexes, les regrouper pour créer des agrégations, et même créer des tableaux croisés dynamiques avec PIVOT.
Ordre des clauses SQL : SELECT → WHERE → GROUP BY → PIVOT → ORDER BY → LIMIT → LABEL. Respecte toujours cet ordre sinon tu auras une erreur de syntaxe.
Important : Utilise toujours des guillemets simples \' pour les valeurs textuelles à l'intérieur de ta requête, car la requête elle-même est déjà entre guillemets doubles. Exemple : "SELECT A WHERE B = \'Paris\'"
Astuce pro : Tu peux utiliser des opérateurs comme AND, OR, NOT dans tes conditions WHERE, et des fonctions d'agrégation comme SUM, AVG, COUNT, MIN, MAX avec GROUP BY pour créer des analyses sophistiquées.
en_têtes
(obligatoire)Gérer les lignes d'en-tête (facultatif)
Le paramètre en_têtes indique à QUERY combien de lignes au début de ta plage sont des en-têtes de colonnes plutôt que des données. C'est crucial pour que QUERY sache où commencent les vraies données à interroger.
Utilise -1 (valeur par défaut) pour laisser Google Sheets deviner automatiquement en analysant le type de données. Utilise 0 si ta plage ne contient aucune en-tête et que les données commencent immédiatement. Utilise 1 ou plus si tu as une ou plusieurs lignes d'en-têtes fixes.
Astuce pro : Si QUERY traite incorrectement ta première ligne de données comme des en-têtes, force explicitement en_têtes à 0. Si au contraire elle ignore tes en-têtes, force à 1 pour les inclure.
Comprendre QUERY en profondeur
Le SQL arrive dans Google Sheets
QUERY apporte la puissance du langage SQL directement dans tes feuilles de calcul. Si tu as déjà travaillé avec des bases de données relationnelles comme MySQL, PostgreSQL ou SQL Server, tu te sentiras immédiatement à l'aise avec la syntaxe. Si c'est ta première expérience avec SQL, QUERY est une excellente introduction aux concepts de requêtes structurées.
La fonction utilise le Google Visualization API Query Language, une variante simplifiée de SQL spécialement optimisée pour manipuler des tableaux de données dans des feuilles de calcul. Tu n'as pas besoin de créer des tables, définir des schémas ou gérer des index : tes données dans la feuille sont automatiquement traitées comme une table de base de données prête à être interrogée.
Les clauses SQL que tu peux utiliser
QUERY supporte les principales clauses SQL dont tu as besoin pour analyser tes données : SELECT pour choisir quelles colonnes afficher, WHERE pour filtrer les lignes selon des conditions (=, !=, >, <, LIKE, CONTAINS...), ORDER BY pour trier les résultats (ASC ou DESC), GROUP BY pour regrouper et agréger avec SUM, AVG, COUNT, MIN, MAX.
Tu as aussi accès à PIVOT pour créer des tableaux croisés dynamiques en transformant des valeurs de lignes en colonnes, LIMIT pour limiter le nombre de résultats retournés (pratique pour les top 10), et LABEL pour renommer les colonnes dans le résultat final.
Combine les clauses : Une requête puissante peut ressembler à "SELECT A, SUM(B) WHERE C = 'France' AND D > 1000 GROUP BY A ORDER BY SUM(B) DESC LIMIT 10 LABEL A 'Région', SUM(B) 'Total'"
Pourquoi QUERY change la donne en entreprise
Dans les entreprises modernes, les équipes manipulent quotidiennement des milliers de lignes de données : ventes, clients, transactions, inventaires, finances. Avant QUERY, créer des analyses complexes nécessitait des dizaines de colonnes auxiliaires avec des formules imbriquées compliquées, difficiles à maintenir et à comprendre.
Avec QUERY, tu remplaces tout ça par une seule formule lisible. Les analystes commerciaux filtrent instantanément des milliers de ventes par région, période, produit et vendeur. Les équipes RH extraient en un clic les employés correspondant à des critères multiples de département, ancienneté et rémunération. Les contrôleurs de gestion agrègent automatiquement des données financières par catégorie, centre de coûts et période pour créer des tableaux de bord dynamiques.
Les data analysts croisent plusieurs dimensions complexes pour identifier des tendances, anomalies ou opportunités cachées dans leurs données. QUERY transforme Google Sheets d'un simple tableur en véritable outil de business intelligence, accessible sans formation technique lourde ni logiciels coûteux.
Exemples en contexte professionnel
Analyste commercial : Filtrer les ventes par région
Tu gères un fichier avec des milliers de ventes et tu veux analyser uniquement les performances de la région Nord. Plutôt que de filtrer manuellement ou d'utiliser des formules complexes, QUERY te permet de créer une vue filtrée et triée instantanément.
Tu filtres toutes les ventes de la région Nord et les tries par montant décroissant pour identifier tes meilleures performances.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Région | Vendeur | Montant | Date |
| 2 | Nord | Marie | 15000 | 2024-01-15 |
| 3 | Sud | Pierre | 23000 | 2024-01-20 |
| 4 | Nord | Sophie | 18000 | 2024-02-10 |
| 5 | Est | Lucas | 12000 | 2024-02-15 |
| 6 | Nord | Marie | 21000 | 2024-03-01 |
| 7 | Ouest | Julie | 19000 | 2024-03-05 |
=QUERY(A1:D7; "SELECT A, B, C, D WHERE A = 'Nord' ORDER BY C DESC")Va plus loin : Ajoute plusieurs conditions avec AND : "WHERE A = 'Nord' AND C > 15000 AND D >= date '2024-02-01'" pour filtrer les grosses ventes du Nord depuis février.
RH : Extraire les employés selon plusieurs critères
Ton équipe RH doit identifier les collaborateurs du département IT avec un salaire supérieur à un certain seuil pour une analyse de masse salariale. QUERY te permet de combiner plusieurs conditions de filtrage en une seule formule claire.
Tu extrais rapidement les employés IT avec un salaire supérieur à 46000€ pour ton analyse de rémunération.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Nom | Département | Salaire | Ancienneté |
| 2 | Dupont | IT | 45000 | 5 |
| 3 | Martin | Marketing | 38000 | 3 |
| 4 | Bernard | IT | 52000 | 8 |
| 5 | Durand | Finance | 41000 | 4 |
| 6 | Lefebvre | IT | 48000 | 6 |
| 7 | Rousseau | IT | 44000 | 2 |
=QUERY(A1:D7; "SELECT A, C, D WHERE B = 'IT' AND C > 46000 ORDER BY C DESC")Combine les critères : Utilise AND pour des conditions cumulatives ou OR pour des conditions alternatives : "WHERE (B = 'IT' OR B = 'Finance') AND C > 45000"
Contrôleur de gestion : Agréger des dépenses par catégorie
Tu dois créer un tableau de synthèse mensuel qui agrège automatiquement toutes les dépenses par catégorie. Plutôt que des tableaux croisés dynamiques manuels, QUERY te donne un résultat dynamique qui se met à jour automatiquement.
Tu agrèges automatiquement toutes les dépenses par catégorie et les tries par montant total décroissant.
| A | B | C | |
|---|---|---|---|
| 1 | Catégorie | Mois | Dépenses |
| 2 | Marketing | Janvier | 12000 |
| 3 | IT | Janvier | 8000 |
| 4 | Marketing | Février | 15000 |
| 5 | IT | Février | 9000 |
| 6 | Marketing | Mars | 11000 |
| 7 | IT | Mars | 7500 |
| 8 | RH | Janvier | 5000 |
=QUERY(A1:C8; "SELECT A, SUM(C) GROUP BY A ORDER BY SUM(C) DESC LABEL SUM(C) 'Total'")Fonctions d'agrégation : Utilise SUM pour les totaux, AVG pour les moyennes, COUNT pour compter, MIN et MAX pour les extrêmes. Tu dois toujours utiliser GROUP BY avec ces fonctions.
Data analyst : Croiser plusieurs dimensions complexes
Tu analyses le chiffre d'affaires des produits par région et par trimestre pour identifier les meilleures opportunités commerciales. QUERY te permet de croiser autant de critères que nécessaire tout en gardant une formule lisible.
Tu analyses le CA des laptops au Q1 par région en croisant produit, trimestre et localisation pour identifier tes meilleurs marchés.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Produit | Région | Quantité | CA | Trimestre |
| 2 | Laptop | Nord | 45 | 67500 | Q1 |
| 3 | Souris | Sud | 120 | 3600 | Q1 |
| 4 | Laptop | Sud | 38 | 57000 | Q2 |
| 5 | Clavier | Nord | 85 | 6800 | Q2 |
| 6 | Laptop | Est | 52 | 78000 | Q1 |
| 7 | Laptop | Nord | 41 | 61500 | Q1 |
=QUERY(A1:E7; "SELECT B, SUM(D) WHERE A = 'Laptop' AND E = 'Q1' GROUP BY B ORDER BY SUM(D) DESC LABEL B 'Région', SUM(D) 'CA Total'")Analyse multidimensionnelle : Tu peux grouper par plusieurs colonnes : "GROUP BY A, B" pour créer des sous-totaux par catégorie et sous-catégorie.
Comparaison avec des fonctions similaires
| Fonction | Utilité principale | Avantages | Limites |
|---|---|---|---|
| QUERY | Interroger avec SQL : filtrer, trier, agréger, pivoter | Puissance maximale, syntaxe SQL, combine tout en une formule | Google Sheets uniquement, courbe d'apprentissage |
| FILTRE | Filtrer des lignes selon des conditions simples | Simple à utiliser, disponible Excel et Sheets | Pas d'agrégation, pas de tri intégré |
| TRIER | Trier des données par une ou plusieurs colonnes | Facile d'usage, multi-critères possible | Pas de filtrage, pas d'agrégation |
| UNIQUE | Extraire les valeurs uniques d'une plage | Très simple pour dédupliquer | Pas de filtrage avancé ni agrégation |
| SOMME.SI.ENS | Sommer avec plusieurs conditions | Excel et Sheets, simple pour totaux conditionnels | Résultat unique, pas de tableau complet |
Quand choisir QUERY : Si tu as besoin de combiner filtrage, tri, agrégation ou tableaux croisés en une seule opération, QUERY est imbattable. Pour des besoins simples, FILTRE ou TRIER peuvent suffire.
Erreurs fréquentes
QUERY completed with an empty output
Cette erreur survient quand ta requête ne retourne aucune ligne de résultat. C'est souvent dû à une condition WHERE trop restrictive, une faute de frappe dans une valeur texte (majuscules/minuscules), ou des données qui n'existent tout simplement pas.
Solution : Teste d'abord avec "SELECT *" sans WHERE pour vérifier que ta plage de données est correcte. Ajoute ensuite les conditions une par une pour identifier celle qui pose problème. Vérifie la casse exacte de tes valeurs textuelles.
Invalid query: erreur de syntaxe SQL
Ta requête SQL contient une erreur de syntaxe : mot-clé mal orthographié, guillemets manquants ou incorrects, parenthèses mal fermées, ou clauses dans le mauvais ordre.
Solution : Vérifie l'ordre obligatoire des clauses : SELECT, WHERE, GROUP BY, PIVOT, ORDER BY, LIMIT, LABEL. Utilise toujours des guillemets simples \' pour les valeurs textuelles. Vérifie que tous les parenthèses et guillemets sont bien fermés.
Can't perform aggregation without GROUP BY
Tu utilises une fonction d'agrégation (SUM, AVG, COUNT, MIN, MAX...) dans ton SELECT avec d'autres colonnes non agrégées, mais tu as oublié le GROUP BY. En SQL, si tu agrèges certaines colonnes, toutes les autres doivent être dans GROUP BY.
Solution : Ajoute "GROUP BY" suivi de toutes les colonnes présentes dans SELECT qui ne sont pas dans une fonction d'agrégation. Exemple : "SELECT A, SUM(B) GROUP BY A"
Column [X] doesn't exist
Tu références une colonne qui n'existe pas dans ta plage de données. Par exemple, tu utilises "SELECT F" alors que ta plage A1:D100 ne contient que les colonnes A à D. Attention : les lettres sont relatives à ta plage, pas à la feuille.
Solution : Vérifie que ta plage de données inclut bien toutes les colonnes que tu références dans ta requête. Si ta plage commence en B, alors Col1 correspond à la colonne B, pas A.
Type mismatch: comparaison de types incompatibles
Tu essaies de comparer des types de données incompatibles, par exemple "WHERE A > 100" alors que la colonne A contient du texte, ou "WHERE B = 'Paris'" alors que B contient des nombres.
Solution : Assure-toi que tes colonnes contiennent le bon type de données avant de faire ta requête. Utilise des guillemets simples uniquement pour le texte, rien pour les nombres, et le format date '2024-01-15' pour les dates.
Guillemets simples oubliés dans les valeurs texte
Tu as écrit WHERE A = Paris au lieu de WHERE A = \'Paris\'. Sans guillemets simples, Google Sheets pense que "Paris" est un nom de colonne ou une variable, pas une valeur texte.
Solution : Encadre toujours les valeurs textuelles avec des guillemets simples \' à l'intérieur de ta requête : "WHERE A = \'Paris\' AND B = \'France\'"
Questions fréquentes
Quelles clauses SQL sont supportées par QUERY ?
QUERY supporte les principales clauses SQL : SELECT (sélection de colonnes), WHERE (filtrage), ORDER BY (tri), GROUP BY (regroupement), PIVOT (tableaux croisés), LIMIT (limitation de résultats) et LABEL (renommage de colonnes). Tu peux les combiner pour créer des analyses sophistiquées en une seule formule.
Comment référencer les colonnes dans une requête QUERY ?
Les colonnes se référencent par leurs lettres (A, B, C...) ou par Col1, Col2, Col3... Tu peux aussi utiliser les en-têtes de colonnes si le paramètre en_têtes est défini sur 1 ou -1. Attention : les lettres de colonnes sont relatives à ta plage de données, pas à la feuille entière.
QUERY fonctionne-t-elle dans Excel ?
Non, QUERY est une fonction exclusive à Google Sheets. Excel propose des alternatives comme les tableaux structurés, Power Query ou les fonctions FILTRER et TRIER pour obtenir des résultats similaires. Si tu travailles sur Excel, utilise FILTRE, TRIER et UNIQUE en combinaison.
Peut-on combiner plusieurs fonctions QUERY ensemble ?
Oui, tu peux utiliser le résultat d'une QUERY comme source de données pour une autre QUERY. Tu peux aussi combiner QUERY avec d'autres fonctions comme ARRAYFORMULA, IMPORTRANGE ou même utiliser des opérateurs d'ensemble pour fusionner plusieurs requêtes.
Comment debugger une requête QUERY qui ne fonctionne pas ?
Commence par tester une requête simple comme "SELECT *" pour vérifier que ta plage de données est correcte. Ajoute ensuite les clauses une par une : d'abord SELECT avec les colonnes spécifiques, puis WHERE, puis ORDER BY, etc. Vérifie toujours les guillemets simples pour les valeurs textuelles et les types de données de tes colonnes.
Fonctions similaires
Deviens un expert Excel et Google Sheets
Rejoins Le Dojo Club pour maîtriser toutes les fonctions avancées et transformer tes compétences en tableur.
Essayer pendant 30 jours