De nombreux utilisateurs de Google Sheets passent un temps précieux chaque semaine à trier des colonnes, copier-coller des plages et maintenir des filtres qui se brisent dès qu'une ligne s'ajoute. Une seule fonction peut automatiser une grande partie de ce travail répétitif : la fonction QUERY. Elle filtre, agrège et transforme n'importe quel jeu de données en quelques secondes, sans écrire une seule ligne de code, sous réserve que vos données restent structurées et dans des formats réguliers. Pensez à la fonction QUERY comme au couteau suisse de Google Sheets : là où un filtre classique masque des lignes, une requête extrait, projette et recalcule vos données vers un nouvel emplacement, en temps réel. Ce tutoriel vous mène des premières formules de base jusqu'aux agrégations avancées et à la connexion avec AppSheet pour créer une véritable application mobile. Des modèles prêts à l'emploi illustrant chaque étape sont disponibles sur SheetsPower, la plateforme de tutoriels Google Sheets et AppSheet sans code.
Sommaire
ToggleQu'est-ce que la fonction QUERY?
La fonction QUERY utilise une syntaxe inspirée du langage SQL, mais vous n’avez pas besoin de connaître les bases de données pour l’utiliser.
Vous écrivez votre instruction directement dans une cellule Google Sheets, entre guillemets, et la fonction se charge du reste.
Contrairement au filtre automatique ou à la fonction FILTRE, QUERY ne modifie pas votre tableau source : elle crée une copie filtrée et structurée dans un emplacement séparé, ce qui préserve vos données originales et vous permet de multiplier les vues sans dupliquer manuellement quoi que ce soit.
Syntaxe
La syntaxe fondamentale se décompose ainsi :
=QUERY(plage_de_données ; "requête" ; nb_entêtes)
- plage_de_données: est la plage à interroger, par exemple
A1:G500 - requête: est l’instruction écrite entre guillemets, dans un langage structuré proche du SQL
- nb_entêtes: indique combien de lignes d’en-tête se trouvent en haut de votre plage, le plus souvent
1si votre première ligne contient les titres de colonnes
Ensuite, trois clauses couvrent la grande majorité des situations du quotidien.
La première, SELECT permet de choisir les colonnes à afficher. Par exemple SELECT A, C, F renvoie uniquement ces trois colonnes.
La deuxième WHERE sert à filtrer les lignes selon une condition donnée. Exemple: WHERE C = 'Île-de-France' ne conserve que les lignes correspondant à cette région.
Enfin la troisième, ORDER BY, permet de trier le résultat. Par exemple ORDER BY F DESC classe la colonne F par ordre décroissant.
Pour illustrer cela, prenons l’exemple d’un tableau de ventes.
Si nous voulons extraire les ventes en Ile-de-France, la formule complète pourrait ressembler à ceci :
On voit qu’en une seule cellule, vous pouvez obtenir la liste de tous les clients franciliens, triés par montant décroissant, sans toucher au tableau source.
Filtrer et combiner des conditions pour des requêtes précises
Aller au-delà des filtres simples devient indispensable dès que vos analyses portent sur plusieurs critères simultanés.
La fonction QUERY gère cela avec les opérateurs AND et OR, que vous combinez librement dans la clause WHERE.
Par exemple, pour isoler les commandes d’un commercial précis, sur le premier trimestre, dépassant 5 000 euros, vous n’avez besoin d’aucun tableau croisé dynamique. Tout tient dans une seule formule.
💡 La syntaxe varie légèrement selon le type de données.
- Les chaînes de texte s’entourent de guillemets simples à l’intérieur de la requête :
WHERE B = 'Martin'. Les dates utilisent le mot-clé date suivi de la valeur au format AAAA-MM-JJ telles queWHERE A >= date '2026-01-01'. - Les valeurs numériques en revanche s’écrivent directement, sans guillemets. On écrira directement
WHERE F > 5000.
Vous pouvez bien entendu rendre votre requête dynamique. Ainsi, au lieu d’écrire le critère en dur dans la formule, vous pouvez le concaténer avec la valeur d’une cellule.
Si nous reprenons l’exemple précédent, on peut extraire toutes les ventes d’une personne donnée en faisant comme ceci:
Il suffira de sélectionner le nom dans la cellule B1, et le tableau se mettra à jour instantanément. Notez que pour des valeurs numériques, la syntaxe est encore plus simple, sans apostrophes.
Calculer, regrouper et résumer vos données
Jusqu’ici, la fonction QUERY extrayait des lignes. Avec GROUP BY et les fonctions d’agrégation, elle produit des synthèses, un saut qualitatif majeur qui vous fait passer de l’affichage de données brutes à la génération automatique de rapports.
Les cinq fonctions à connaître sont SUM (somme), COUNT (nombre de valeurs), AVG (moyenne), MAX (valeur maximale) et MIN (valeur minimale).
GROUP BY pour filtrer par catégorie
GROUP BY regroupe les lignes qui partagent la même valeur dans une colonne, puis applique un calcul à chaque groupe.
Par exemple, si nous voulons déterminer le montant total des ventes par commercial, la formule serait:
=QUERY(Donnees_Ventes!A1:G21 ; "SELECT D, SUM(F) GROUP BY D LABEL SUM(F) 'Total ventes'" ; 1)
💡 Une règle à retenir : toute colonne présente dans SELECT doit figurer soit dans GROUP BY, soit dans une fonction d’agrégation.
LABEL et FORMAT
Les colonnes agrégées portent par défaut des noms peu lisibles comme sum F ou count A. Les clauses LABEL et FORMAT améliorent la lisibilité du résultat.
- LABEL permet en effet de renommer ou personnaliser les en-têtes de colonnes générés par la requête
- FORMAT applique un masque d’affichage directement dans la requête :
FORMAT SUM(F) '# ##0,00 €'affiche les montants selon les conventions françaises, bien que le rendu final puisse varier selon les paramètres régionaux de votre classeur.
Si on applique les 2 clauses à notre exemple, on obtient le résultat suivant:
Conclusion
Nous avons parcouru différentes utilisations de la fonction Query de la requête simple avec SELECT en passant par les conditions combinées, les agrégations avancées. Maîtriser la fonction QUERY, c’est remplacer des tâches manuelles répétitives par une formule unique qui se recalcule seule, ce qui représente un gain concret en temps et en fiabilité pour quiconque travaille régulièrement avec des données dans Sheets.
FAQ- QUERY
La fonction s’articule autour de trois arguments : =QUERY(plage_de_donnees ; "requête" ; [nb_entêtes]). La requête s’écrit toujours entre guillemets doubles et s’inspire de la syntaxe SQL.
Il indique le nombre de lignes d’en-tête présentes au sommet de la plage sélectionnée. La valeur 1 est la plus courante lorsque la première ligne contient les intitulés des colonnes. Indiquer 0 permet de traiter l’ensemble de la plage comme de la donnée brute sans titre.
Voici l’ordre des principales clauses :
1. SELECT
2. WHERE
3. GROUP BY
4. ORDER BY
5. LIMIT
6. LABEL
7. FORMAT
Inverser deux clauses (par exemple placer un WHERE après un GROUP BY) renvoie une erreur de syntaxe #VALUE!.
Dès que la clause GROUP BY est employée, chaque colonne appelée après SELECT doit impérativement être présente dans le GROUP BY ou être encapsulée dans une fonction d’agrégation (SUM, COUNT, AVG, MAX, MIN). Par exemple, SELECT A, B, SUM(C) GROUP BY A provoque une erreur ; il faut écrire SELECT A, B, SUM(C) GROUP BY A, B.
- Pour une condition texte (ex.
WHERE C = 'Île-de-France'), les valeurs doivent être entourées de guillemets simples. - Pour renommer un champ via
LABEL, la valeur s’écrit aussi entre guillemets simples (ex.LABEL SUM(F) 'Total ventes'). Si le texte contient lui-même une apostrophe, celle-ci peut créer un conflit d’analyse : il est conseillé de reformuler (ex.'Chiffre affaires'au lieu de'Chiffre d\'affaires').
➡️ Retrouvez tous nos articles dans la catégorie Google Sheets ⬅️
