Google Sheets : rechercher des données avec la fonction QUERY()

2

Query fait partie des fonctions mystérieuses de Sheets.
« – Tu utilises Query toi ?
– Ouais, vite fait…
– Waouh, respect ! »

Pourquoi la fonction QUERY inspire-t-elle une telle marque de respect, voire de peur, chez de nombreux utilisateurs de Sheets ?
Peut-être par sa formulation qui peut paraître très complexe à un certain niveau d’utilisation ?
Ou bien du fait que cette fonction s’appuie sur le langage SQL des bases de données relationnelles, et se singularise des fonctions propres aux tableurs par sa syntaxe particulière ? Quoi qu’il en soit, il plane sur cette fonction un mystère indéfinissable…

Désacralisons le loup de mer et voyons ensemble :

  • à quoi sert cette fonction ;
  • dans quelles conditions l’utiliser ;
  • et bien sûr comment l’écrire ?

QUERY ça sert à quoi ?

« QUERY » en anglais signifie « requête ». Une requête, c’est un ordre pour rechercher, calculer et afficher des informations présentes dans une table de données répondant à un ou plusieurs critères précis.

Query ou l'art de lancer un filet à la mer. source : pixabay
Une requête est comme ce filet lancé dans l’océan qui rapportera au pécheur tous les poissons qui ne passeront pas les mailles du filet quand le soleil darde ses premiers rayons à l’horizon ;

Tables de données : La fonction « QUERY » est liée au langage de programmation utilisant des bases de données SQL. Pour utiliser QUERY efficacement, il est donc important de construire des tables de données structurées. Je vous invite à consulter cette série d’articles sur la question des tables de données. Le point principal à retenir est l’organisation des données dans un tableau simple, à une seule entrée. Apprenez et récitez ce mantra une fois le matin, une fois le midi et deux fois le soir :

un individu par ligne, une information dans un format unique (texte, nombre ou date) par colonne.

Voici un exemple de table : vous pouvez la copier en cliquant ici.

Exemple d'une table de données exploitable avec QUERY
Exemple d’une table de données exploitable avec QUERY (voir article suivant pour la construction de cette table)

Rechercher : nous allons rechercher des informations dans une source, cette recherche se fera sur des colonnes de la table de données qui répondront à des critères (par exemple : « sélectionne les colonnes ‘Nom de l’objet’ et ‘Prix unitaire’ en euros dont les lignes le nom est identique à « souris » et où le prix est plus grand que 10″) ;

Afficher : nous allons indiquer comment afficher les informations, quelles colonnes afficher dans quel ordre, sous quelle forme : brut ou avec des statistiques, dans quel ordre ?

Pour quelles situations puis-je utiliser QUERY ?

Il existe une multitude d’utilisations de QUERY… en voici quelques exemples, non exhaustifs.

Recopier une table

=QUERY(A:I)

L’intérêt est limité, et d’autres formules le font très bien :

= arrayformula(A:I)
= filter(A:I;A:A<>"")

Recopier certaines colonnes dans un autre ordre

Je ne veux que les colonnes Nom de l’objet, Prix unitaire en € et Date du prix

= QUERY(A:I;"SELECT B,H,C")

Voir ici un cas d’usage similaire avec QUERY et IMPORTRANGE en vidéo.

Filtrer des données

A l’instar de FILTER, QUERY permet d’extraire des informations d’une table de données répondant à un certain nombre de critères. QUERY et FILTER permettent d’obtenir des résultats semblables… jusqu’à un certain niveau. QUERY est préconisée quand les critères de recherche s’entremêlent et sont plus complexes.

Le choix d’une solution passe toujours par une formulation précise du besoin.

« Je cherche tous les codes projets, leurs noms, leur CHIFFRE D’AFFAIRES, réalisés en 2020 qui ont fait un Chiffre d’affaires de plus de 5 000 € sur toutes les régions de France. »

Dans ce besoin, le mot clef est « cherche », qui passe par une requête donc potentiellement par un QUERY. Nous verrons dans la suite comment rédiger ce type de requête.

Rédaction d’une requête QUERY

La requête comprend deux arguments principaux : La source de données et la consigne.

=QUERY(SOURCE DE DONNEES;CONSIGNE)

SOURCE DE DONNEES d’un QUERY

Une source peut être …

une plage située dans la même feuille de calcul :A2:C250
une plage située dans une autre feuille de calcul :‘Mon autre feuille’!A2:C250
une plage nommée
(pratique car elle peut être partout dans le même fichier)
‘Ma Plage Nommée’
une plage située dans un autre fichier SpreadSheet :importrange(‘idspreadsheet’,’Mon autre feuille’!A2:C250)
plusieurs plages de données {source1; source2}
….

Le plus important est que la source intègre toutes les colonnes qui seront utilisées dans la consigne.

CONSIGNE

Cet argument essentiel n’est pourtant pas indispensable ! Si il est omis, le résultat affichera la source telle quelle du premier argument.

Une seule consigne pour l’instant : SELECT

Avec Sheets, la seule requête disponible pour l’instant est « SELECT » qui permet de sélectionner des données.

La casse n’a pas d’importance. « SELECT », « Select », « seLecT »… fonctionnent.

Utilisez bien les doubles guillemets pour écrire la requête.

Le langage SQL permet de faire des requêtes de recherche (« SELECT« ), mais aussi de création de données (« INSERT« ), de modification (« UPDATE« ) ou de suppression (« DELETE« ) sur une table de données…
« Oh Google, quand nous fourniras-tu ces possibilités sur Sheets ? » (à chanter sur l’air de « Un été indien » de Joe Dassin.)

A la suite de l’instruction « SELECT », il faut préciser les colonnes de la table que vous souhaitez afficher :

Exemples avec la source suivante : A2:F250

=QUERY(A2:F250;"SELECT 
… toutes les colonnes de la source, dans l’ordre de la source *
… seulement les colonnes identifiées par leur lettre (lettre en majuscules, séparée par une virgule)
Remarque : toutes les colonnes appelées ici doivent faire partie de la source.
il n’est pas possible d’appeler deux fois la même colonne
A,B,D,F
… seulement les colonnes identifiées et dans un ordre différentE,C,A
… seulement les colonnes identifiées par leur place
attention à la casse : « Coln »;
uniquement pour les sources « importrange »
(cf video de Cyrille : https://thierryvanoffe.com/google-sheets-la-fonction-query/)
Col1, Col4
… des calculs sur une colonne (dans l’exemple il faut que la colonne A de la source contienne des données numériques, ici la colonne A sera divisée par 5 puis multipliée par 100 pour obtenir 20% de la colonne sélectionnée.)(A/5)*100
… des fonctions d’agrégation d’une colonne : le resultat sera une seule ligne compilant la colonne soit sur la valeur maximale, minimale ou la moyenne (avg) de la colonnemax(A), min(B), avg(C)
")

exemple :

=QUERY(A2:F250; »SELECT B,D,F »)

WHERE

« WHERE » (« Où » en français) introduit les critères de filtrage de la sélection.

=QUERY(A2:F250;"SELECT B,D,F WHERE...
… comparateur de colonne avec une donnée numérique fixe
(il faut que A contienne des valeurs numériques)
A=100
A<100
A>=100
… comparateur de colonne avec du texte
(le mot a chercher doit être entre guillemets simples, les doubles guillemets enferment la requête, pour l’instant nous ne voulons pas en sortir… pour l’instant)
A = ‘souris’
le « like » permet de comparer la colonne avec un mot, le ‘%’ indique ‘n’importe quel caractère’. Donc ici : « où A commence par le mot ‘souris’« A like ‘souris%’
A like ‘%souris’
… comparer avec une donnée numérique de la feuille de calcul. C’est ici que nous avons besoin de sortir de la requête écrite pour aller chercher une valeur dans la feuille de calcul : exemple : « où la colonne A est égale à la valeur saisie dans la cellule B1″ ;
Sortir de la consigne se fait :
– en fermant les guillemets,
– concaténant avec &,
– ajoutant la référence de la cellule,
– ajoutant un &
– et réouvrant les guillemets pour rouvrir la consigne.
A = « &B1& »
… comparer avec une donnée textuelle de la feuille de calcul. Pareil mais avec les guillemets simples pour encapsuler la valeur textuelle.A = ‘ »&B1& »‘
… et encore de nombreuses autres possibilités.

et on n’oublie pas de fermer les guillemets et la parenthèse d’instruction de QUERY ! Attention aux courant d’air…

")

Cet article, en guise d’introduction, nous a permis de dresser un portrait général de la fonction QUERY, la puissance de cette fonction nous invite à en rédiger de nombreux autres. N’hésitez pas à nous contacter si vous utilisez régulièrement QUERY dans des cas d’usages concrets.

Si vous avez trouvé une faute d’orthographe, veuillez nous en informer en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée .

2 Commentaires

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.