{"id":8917,"date":"2026-09-23T06:10:34","date_gmt":"2026-09-23T06:10:34","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/google-sheets-query-selectionner-lignes-contiennent-chaine\/"},"modified":"2026-09-23T06:10:44","modified_gmt":"2026-09-23T06:10:44","slug":"google-sheets-query-selectionner-lignes-contiennent-chaine","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=google-sheets-query-selectionner-lignes-contiennent-chaine","title":{"rendered":"Google Sheets Query : S\u00e9lectionner les lignes qui contiennent une cha\u00eene"},"content":{"rendered":"<p>L&rsquo;\u00e9cosyst\u00e8me contemporain du traitement de donn\u00e9es au sein des tableurs infonuagiques a connu une mutation paradigmatique majeure avec l&rsquo;av\u00e8nement de fonctionnalit\u00e9s d&rsquo;interrogation d\u00e9claratives avanc\u00e9es. Parmi ces instruments de calcul, la fonction <code>QUERY<\/code> de <a rel=\"noopener noreferrer\" href=\"https:\/\/support.google.com\/docs\/answer\/3093343\">Google Sheets<\/a> s&rsquo;impose comme le dispositif le plus puissant et le plus polyvalent pour la manipulation, le filtrage et la restructuration d&rsquo;ensembles d&rsquo;enregistrements complexes. En int\u00e9grant la syntaxe et la logique du langage d&rsquo;interrogation de l&rsquo;API Google Visualization, cette fonction \u00e9mule la puissance de l&rsquo;alg\u00e8bre relationnelle et du langage SQL (Structured Query Language) au sein d&rsquo;une simple cellule matricielle, affranchissant l&rsquo;analyste des imbrications fastidieuses de filtres conditionnels traditionnels.<\/p>\n<p>Au c\u0153ur de cette architecture d&rsquo;interrogation r\u00e9side la probl\u00e9matique r\u00e9currente de l&rsquo;extraction textuelle cibl\u00e9e, et plus particuli\u00e8rement la s\u00e9lection des rang\u00e9es satisfaisant un crit\u00e8re d&rsquo;inclusion de sous-cha\u00eene. Alors que l&rsquo;\u00e9galit\u00e9 stricte s&rsquo;av\u00e8re fr\u00e9quemment inop\u00e9rante face \u00e0 des corpus textuels h\u00e9t\u00e9rog\u00e8nes, des descriptions qualitatives, des libell\u00e9s logistiques ou des identifiants composites, l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> constitue la clef de vo\u00fbte du filtrage partiel. Cet op\u00e9rateur permet d&rsquo;isoler des donn\u00e9es signifiantes sans exiger une correspondance int\u00e9grale du champ textuel, ouvrant ainsi la voie \u00e0 des m\u00e9thodologies d&rsquo;analyse de donn\u00e9es d&rsquo;une finesse algorithmique remarquable.<\/p>\n<p>Cependant, la manipulation de l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> dans Google Sheets ne saurait se r\u00e9sumer \u00e0 une simple application m\u00e9canique de formules g\u00e9n\u00e9riques. L&rsquo;\u00e9valuation s\u00e9mantique op\u00e9r\u00e9e par le moteur sous-jacent implique une compr\u00e9hension rigoureuse du typage des donn\u00e9es, de la sensibilit\u00e9 \u00e0 la casse typographique, de la gestion des valeurs nulles, ainsi que des interactions complexes entre les op\u00e9rateurs bool\u00e9ens de conjonction et de disjonction. Une mauvaise appr\u00e9hension de ces m\u00e9canismes formels expose in\u00e9vitablement l&rsquo;analyste \u00e0 des pertes silencieuses de donn\u00e9es, \u00e0 des erreurs de compilation syntaxique ou \u00e0 des biais analytiques substantiels. L&rsquo;objet de cet article est de diss\u00e9quer de mani\u00e8re exhaustive les fondements, la syntaxe, les cas limites et les applications avanc\u00e9es de la s\u00e9lection de lignes par inclusion de cha\u00eene avec la fonction <code>QUERY<\/code>.<\/p>\n<h2>1. Fondements et architecture syntaxique de la fonction QUERY<\/h2>\n<h3>1.1 Anatomie structurelle de la formule =QUERY()<\/h3>\n<p>L&rsquo;invocation canonique de la fonction d&rsquo;interrogation au sein de la grille de calcul s&rsquo;articule autour de la signature ternaire formelle : <code>=QUERY(donn\u00e9es; requ\u00eate; [en-t\u00eates])<\/code>. Chacun de ces param\u00e8tres remplit un r\u00f4le algorithmique strictement d\u00e9limit\u00e9 au sein du cycle de vie du calcul matriciel. Le premier argument, <code>donn\u00e9es<\/code>, d\u00e9signe la plage de cellules bidimensionnelle sur laquelle l&rsquo;op\u00e9ration de projection et de s\u00e9lection s&rsquo;ex\u00e9cute. Cette plage peut \u00eatre r\u00e9f\u00e9renc\u00e9e sous une forme continue classique, telle que <code>A1:F1000<\/code>, ou sous la forme d&rsquo;un tableau virtuel issu d&rsquo;une formule matricielle encapsul\u00e9e entre accolades, ce qui modifie alors profond\u00e9ment la d\u00e9nomination structurelle des colonnes sous-jacentes.<\/p>\n<p>Le second argument, <code>requ\u00eate<\/code>, se mat\u00e9rialise sous la forme d&rsquo;une cha\u00eene de caract\u00e8res repr\u00e9sentant l&rsquo;instruction textuelle ex\u00e9cutable. Cette clause de commande, obligatoirement entour\u00e9e de guillemets doubles droits, formalise les op\u00e9rations de s\u00e9lection (<code>SELECT<\/code>), de restriction logique (<code>WHERE<\/code>), d&rsquo;agr\u00e9gation (<code>GROUP BY<\/code>), de tri (<code>ORDER BY<\/code>) ou de formatage (<code>FORMAT<\/code>). Lorsque le moteur d&rsquo;\u00e9valuation de la feuille de calcul analyse cet argument, il d\u00e9l\u00e8gue l&rsquo;interpr\u00e9tation syntaxique \u00e0 un processeur sp\u00e9cialis\u00e9. Toute d\u00e9faillance de fermeture de guillemets ou toute omission de s\u00e9parateur logique entra\u00eene une rupture pr\u00e9coce de la phase d&rsquo;analyse lexicale, g\u00e9n\u00e9rant une exception structurelle qui bloque l&rsquo;affichage des donn\u00e9es.<\/p>\n<p>Le troisi\u00e8me argument, <code>en-t\u00eates<\/code>, bien que facultatif selon la sp\u00e9cification de base, exerce une fonction d\u00e9terminante pour pr\u00e9server l&rsquo;int\u00e9grit\u00e9 m\u00e9tadonn\u00e9e du syst\u00e8me. Il s&rsquo;agit d&rsquo;un nombre entier non n\u00e9gatif indiquant la quantit\u00e9 de rang\u00e9es situ\u00e9es au sommet de la plage qui doivent \u00eatre consid\u00e9r\u00e9es comme des libell\u00e9s descriptifs et non comme des observations empiriques. L&rsquo;omission d\u00e9lib\u00e9r\u00e9e de ce param\u00e8tre force le compilateur \u00e0 formuler une conjecture probabiliste bas\u00e9e sur le typage dominant des premi\u00e8res lignes. Cette heuristique automatique introduit une vuln\u00e9rabilit\u00e9 majeure : si une colonne textuelle poss\u00e8de une ligne d&rsquo;en-t\u00eate alphab\u00e9tique suivie d&rsquo;enregistrements textuels, l&rsquo;algorithme peut fusionner ind\u00fbment les premi\u00e8res rang\u00e9es ou interpr\u00e9ter la ligne de titre comme une valeur de donn\u00e9es, corrompant de facto la validit\u00e9 des s\u00e9lections ult\u00e9rieures bas\u00e9es sur la clause <code>WHERE<\/code>.<\/p>\n<h3>1.2 Origine et sp\u00e9cificit\u00e9s du langage Google Visualization API<\/h3>\n<p>Bien que la syntaxe apparente de la fonction \u00e9voque imm\u00e9diatement le dialecte <a rel=\"noopener noreferrer\" href=\"https:\/\/www.iso.org\/standard\/63555.html\">ANSI SQL<\/a> standardis\u00e9 utilis\u00e9 au sein des syst\u00e8mes de gestion de bases de donn\u00e9es relationnelles, son impl\u00e9mentation repose int\u00e9gralement sur le langage d&rsquo;interrogation de l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/querylanguage\">API Google Visualization<\/a>. Cette filiation conf\u00e8re au moteur de calcul des propri\u00e9t\u00e9s s\u00e9mantiques uniques, mais impose \u00e9galement des contraintes op\u00e9rationnelles rigides que tout praticien se doit d&rsquo;assimiler pour \u00e9viter des comportements anormaux.<\/p>\n<p>La divergence conceptuelle la plus critique r\u00e9side dans l&rsquo;obligation d&rsquo;un typage strict et exclusif au niveau colonnaire. Dans un syst\u00e8me de base de donn\u00e9es relationnelle traditionnel, le sch\u00e9ma impose un type invariable (tel qu&rsquo;entier, cha\u00eene de caract\u00e8res ou date) pour chaque champ d\u00e8s la cr\u00e9ation de la table. Dans un environnement de tableur ouvert tel que Google Sheets, la libert\u00e9 de saisie permet la coexistence anarchique de cha\u00eenes de caract\u00e8res, de nombres r\u00e9els et de dates s\u00e9rialis\u00e9es au sein d&rsquo;une m\u00eame coordonn\u00e9e verticale. Face \u00e0 cette h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9, l&rsquo;API Google Visualization d\u00e9ploie un algorithme de d\u00e9termination typologique bas\u00e9 sur la r\u00e8gle de majorit\u00e9 statistique.<\/p>\n<p>Le moteur examine un \u00e9chantillon repr\u00e9sentatif des valeurs contenues dans la colonne cible pour d\u00e9terminer son type dominant. D\u00e8s lors que cette identit\u00e9 typologique est fix\u00e9e (par exemple, le type num\u00e9rique), toute valeur discordante appartenant \u00e0 un type minoritaire (par exemple, une cha\u00eene de caract\u00e8res alphab\u00e9tique explicative saisie au sein d&rsquo;une colonne de montants mon\u00e9taires) est imm\u00e9diatement et silencieusement transform\u00e9e en valeur nulle (<code>null<\/code>). Cette coercition implicite produit des r\u00e9percussions directes et souvent d\u00e9vastatrices sur les filtres textuels : si une colonne est cat\u00e9goris\u00e9e comme num\u00e9rique par le moteur, l&rsquo;application d&rsquo;un pr\u00e9dicat de recherche textuelle via <code>CONTAINS<\/code> \u00e9chouera irr\u00e9m\u00e9diablement, non pas en d\u00e9clenchant un message d&rsquo;erreur explicite, mais en excluant l&rsquo;int\u00e9gralit\u00e9 des cellules discordantes qui auront \u00e9t\u00e9 \u00e9radiqu\u00e9es en m\u00e9moire vive lors de la phase de normalisation pr\u00e9alable.<\/p>\n<h3>1.3 Int\u00e9gration m\u00e9thodologique de la clause WHERE<\/h3>\n<p>La clause <code>WHERE<\/code> remplit le r\u00f4le d&rsquo;op\u00e9rateur de s\u00e9lection restreinte dans le formalisme de l&rsquo;alg\u00e8bre relationnelle. Sur le plan fonctionnel, elle agit comme un pr\u00e9dicat bool\u00e9en appliqu\u00e9 individuellement et s\u00e9quentiellement \u00e0 chaque rang\u00e9e de la table source. Seuls les tuples d&rsquo;enregistrements pour lesquels l&rsquo;\u00e9valuation globale de la condition produit la valeur logique <code>TRUE<\/code> sont achemin\u00e9s vers le flux de sortie de la requ\u00eate pour \u00eatre ensuite projet\u00e9s par la clause <code>SELECT<\/code>.<\/p>\n<p>L&rsquo;\u00e9valuation des requ\u00eates au sein du moteur ob\u00e9it \u00e0 un ordre d&rsquo;ex\u00e9cution logique strict qui diff\u00e8re notablement de l&rsquo;ordre lexical dans lequel la commande est r\u00e9dig\u00e9e. Alors que l&rsquo;instruction d\u00e9bute formellement par le mot-cl\u00e9 <code>SELECT<\/code>, le processeur ex\u00e9cute d&rsquo;abord l&rsquo;identification de la source de donn\u00e9es, puis applique imm\u00e9diatement la clause <code>WHERE<\/code> afin d&rsquo;\u00e9laguer l&rsquo;espace dimensionnel de recherche. Les op\u00e9rations subs\u00e9quentes, telles que le regroupement par <code>GROUP BY<\/code>, le filtrage des agr\u00e9gats via <code>HAVING<\/code>, le classement ordonn\u00e9 via <code>ORDER BY<\/code> et le plafonnement via <code>LIMIT<\/code>, ne sont appliqu\u00e9es qu&rsquo;exclusivement au sous-ensemble des donn\u00e9es ayant franchi avec succ\u00e8s le crible du pr\u00e9dicat de restriction.<\/p>\n<p>Dans ce paradigme s\u00e9quentiel, la d\u00e9finition de la valeur de v\u00e9rit\u00e9 bool\u00e9enne pour chaque enregistrement d\u00e9pend enti\u00e8rement de la r\u00e9solution d&rsquo;expressions logiques unaires ou binaires. Lorsqu&rsquo;un op\u00e9rateur textuel est invoqu\u00e9 dans le pr\u00e9dicat, le moteur \u00e9value la relation entre le contenu physique de la cellule inspect\u00e9e et le litt\u00e9ral sp\u00e9cifi\u00e9 dans la requ\u00eate. Si la cellule contient une valeur nulle ou si le type sous-jacent est jug\u00e9 incompatible avec l&rsquo;op\u00e9ration demand\u00e9e, la valeur bool\u00e9enne r\u00e9sultante bascule vers un \u00e9tat ind\u00e9termin\u00e9 qui est syst\u00e9matiquement assimil\u00e9 \u00e0 <code>FALSE<\/code> dans le cadre du filtrage standard, neutralisant de facto la rang\u00e9e correspondante.<\/p>\n<h2>2. L&rsquo;op\u00e9rateur CONTAINS : D\u00e9finition, s\u00e9mantique et fonctionnement interne<\/h2>\n<h3>2.1 M\u00e9canisme d&rsquo;\u00e9valuation de la sous-cha\u00eene textuelle<\/h3>\n<p>L&rsquo;op\u00e9rateur <code>CONTAINS<\/code> constitue un comparateur relationnel binaire con\u00e7u sp\u00e9cifiquement pour tester la pr\u00e9sence d&rsquo;une s\u00e9quence de caract\u00e8res continue au sein d&rsquo;un champ textuel cible. Contrairement \u00e0 l&rsquo;\u00e9galit\u00e9 formelle qui exige une superposition isomorphique exacte entre la valeur de la cellule et le crit\u00e8re de recherche, <code>CONTAINS<\/code> r\u00e9sout l&rsquo;assertion suivante : la cha\u00eene recherch\u00e9e est-elle un sous-ensemble s\u00e9quentiel ordonn\u00e9 de la cha\u00eene examin\u00e9e ? Math\u00e9matiquement, pour une cellule contenant la cha\u00eene <span class=\"arabpsy-math-inline\" data-latex=\"S\">$S$<\/span> et un litt\u00e9ral de recherche <span class=\"arabpsy-math-inline\" data-latex=\"L\">$L$<\/span>, l&rsquo;expression retourne <code>TRUE<\/code> s&rsquo;il existe deux cha\u00eenes quelconques, \u00e9ventuellement vides, <span class=\"arabpsy-math-inline\" data-latex=\"u\">$u$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"v\">$v$<\/span>, telles que la concat\u00e9nation <span class=\"arabpsy-math-inline\" data-latex=\"u \\cdot L \\cdot v = S\">$u \\cdot L \\cdot v = S$<\/span>.<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/mult1-1.png\" alt=\"\" \/><\/figure>\n<p>Ce mode op\u00e9ratoire conf\u00e8re une flexibilit\u00e9 d&rsquo;analyse fondamentale. La sous-cha\u00eene peut se situer au tout d\u00e9but de la cellule (pr\u00e9fixe), au c\u0153ur de celle-ci (inframot), ou \u00e0 sa terminaison imm\u00e9diate (suffixe). De surcro\u00eet, le moteur traite avec une indiff\u00e9rence math\u00e9matique les d\u00e9limiteurs textuels ordinaires, tels que les espaces simples, les traits d&rsquo;union, les barres obliques ou les ponctuations, pour autant qu&rsquo;ils ne fassent pas partie int\u00e9grante de la d\u00e9finition formelle de l&rsquo;argument de recherche.<\/p>\n<p>Sur le plan syntaxique, la directive impose l&rsquo;encadrement imp\u00e9ratif du terme cible au moyen d&rsquo;apostrophes simples droites (<code>'terme'<\/code>). Cette d\u00e9limitation permet au parseur de distinguer formellement les cha\u00eenes litt\u00e9rales pures des identifiants de colonnes (tels que <code>A<\/code>, <code>B<\/code>, <code>Col1<\/code>, <code>Col2<\/code>) ou des mots-cl\u00e9s r\u00e9serv\u00e9s du langage. Tout oubli de ces apostrophes simples provoque l&rsquo;\u00e9mission imm\u00e9diate d&rsquo;une erreur de compilation de type <code>PARSE_ERROR<\/code>, le compilateur tentant vainement d&rsquo;interpr\u00e9ter le terme de recherche comme une variable colonnaire inexistante dans le sch\u00e9ma relationnel de la feuille de calcul.<\/p>\n<h3>2.2 Sensibilit\u00e9 stricte \u00e0 la casse (Case Sensitivity)<\/h3>\n<p>La caract\u00e9ristique technique la plus d\u00e9terminante, et simultan\u00e9ment la plus pi\u00e9geuse, de l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> r\u00e9side dans sa sensibilit\u00e9 stricte et immuable \u00e0 la casse typographique. Pour le moteur de l&rsquo;API Google Visualization, les caract\u00e8res majuscules et minuscules correspondent \u00e0 des points de code <a rel=\"noopener noreferrer\" href=\"https:\/\/unicode.org\/standard\/standard.html\">Unicode<\/a> rigoureusement distincts. En cons\u00e9quence directe, le terme <code>'CLIENT'<\/code>, le terme <code>'Client'<\/code> et le terme <code>'client'<\/code> repr\u00e9sentent trois entit\u00e9s s\u00e9mantiques mutuellement disjointes.<\/p>\n<p>Cette stricte s\u00e9paration binaire induit des failles analytiques consid\u00e9rables lors du traitement de jeux de donn\u00e9es issus de saisies humaines non normalis\u00e9es ou de flux d&rsquo;importation h\u00e9t\u00e9rog\u00e8nes. Consid\u00e9rons une colonne colligeant des statuts de r\u00e9clamation logistique : si un op\u00e9rateur consigne manuellement la mention \u00ab\u00a0Colis endommag\u00e9\u00a0\u00bb, tandis qu&rsquo;un second inscrit \u00ab\u00a0colis endommag\u00e9\u00a0\u00bb et qu&rsquo;un troisi\u00e8me utilise le sigle typographique \u00ab\u00a0COLIS ENDOMMAG\u00c9\u00a0\u00bb, une requ\u00eate formul\u00e9e sous la condition restrictive <code>where A contains 'Colis'<\/code> \u00e9liminera arbitrairement les deux derni\u00e8res variantes d&rsquo;enregistrement. Les enregistrements correspondants ne figureront pas dans le tableau r\u00e9sultant, faussant drastiquement les agr\u00e9gations ou les m\u00e9triques volum\u00e9triques d\u00e9duites.<\/p>\n<p>Cette sensibilit\u00e9 m\u00e9canique impose donc \u00e0 l&rsquo;analyste m\u00e9thodologique une vigilance permanente. Il devient imp\u00e9ratif, d\u00e8s lors que la source de donn\u00e9es n&rsquo;est pas assujettie \u00e0 une validation stricte \u00e0 l&rsquo;entr\u00e9e par menu d\u00e9roulant ou r\u00e8gles de masquage, d&rsquo;anticiper cette disparit\u00e9 soit par des proc\u00e9dures pr\u00e9alables de nettoyage et d&rsquo;uniformisation du corpus brut, soit par la mise en \u0153uvre de stratag\u00e8mes syntaxiques d&rsquo;insensibilisation int\u00e9gr\u00e9s au c\u0153ur m\u00eame de la formule d&rsquo;interrogation.<\/p>\n<h3>2.3 Comparaison conceptuelle : CONTAINS, LIKE et l&rsquo;\u00e9galit\u00e9 stricte<\/h3>\n<p>Le tableau comparatif suivant synth\u00e9tise les comportements et les sp\u00e9cificit\u00e9s structurelles des trois principaux op\u00e9rateurs de filtrage textuel disponibles dans Google Sheets :<\/p>\n<ul>\n<li><strong>Op\u00e9rateur d&rsquo;\u00e9galit\u00e9 stricte (<code>=<\/code>) :<\/strong> Exige une identit\u00e9 int\u00e9grale et absolue entre la cellule examin\u00e9e et la cha\u00eene de r\u00e9f\u00e9rence. La pr\u00e9sence d&rsquo;un seul espace typographique initial ou terminal dans la cellule suffit \u00e0 invalider l&rsquo;\u00e9valuation bool\u00e9enne. Cet op\u00e9rateur s&rsquo;av\u00e8re id\u00e9al pour les cl\u00e9s primaires, les codes normalis\u00e9s ou les identifiants uniques discrets, mais totalement inop\u00e9rant pour l&rsquo;exploration de texte libre.<\/li>\n<li><strong>Op\u00e9rateur de sous-cha\u00eene (<code>CONTAINS<\/code>) :<\/strong> D\u00e9tecte la pr\u00e9sence d&rsquo;une s\u00e9quence textuelle fixe arbitrairement positionn\u00e9e au sein du champ r\u00e9cepteur. Aucune configuration de caract\u00e8res g\u00e9n\u00e9riques n&rsquo;est requise. Son ex\u00e9cution est algorithmiquement fluide, hautement lisible, mais limit\u00e9e par son incapacit\u00e9 structurelle \u00e0 interpr\u00e9ter des masques de saisie variables ou des motifs positionnels pr\u00e9cis.<\/li>\n<li><strong>Op\u00e9rateur de comparaison par motif (<code>LIKE<\/code>) :<\/strong> Emprunt\u00e9 directement aux standards des moteurs SQL traditionnels, <code>LIKE<\/code> repose sur l&rsquo;utilisation explicite de m\u00e9tacaract\u00e8res de substitution. Le symbole pourcentage (<code>%<\/code>) repr\u00e9sente une suite quelconque de z\u00e9ro, un ou plusieurs caract\u00e8res, tandis que le trait de soulignement (<code>_<\/code>) se substitue \u00e0 un caract\u00e8re unique et obligatoire.<\/li>\n<\/ul>\n<p>Le choix m\u00e9thodologique entre <code>CONTAINS<\/code> et <code>LIKE<\/code> d\u00e9coule de l&rsquo;arbitrage entre concision syntaxique et expressivit\u00e9 algorithmique. L&rsquo;instruction <code>where A contains 'rapport'<\/code> \u00e9quivaut fonctionnellement \u00e0 l&rsquo;expression <code>where A like '%rapport%'<\/code>. D\u00e8s lors qu&rsquo;une condition ne requiert aucun ancrage directionnel strict (comme exiger qu&rsquo;une cha\u00eene commence imp\u00e9rativement par une particule pr\u00e9cise sans autoriser sa pr\u00e9sence m\u00e9diane), <code>CONTAINS<\/code> offre une structure plus compacte et moins sujette aux erreurs d&rsquo;\u00e9chappement typographique. En revanche, si la logique d&rsquo;affaires impose qu&rsquo;un num\u00e9ro de dossier commence par \u00ab\u00a0D-\u00a0\u00bb suivi de trois caract\u00e8res quelconques et s&rsquo;ach\u00e8ve par \u00ab\u00a0FR\u00a0\u00bb, <code>LIKE<\/code> s&rsquo;impose par sa capacit\u00e9 \u00e0 contraindre la topologie du texte via la formulation <code>where A like 'D-___FR'<\/code>.<\/p>\n<h2>3. Extraction unitaire : S\u00e9lection de lignes contenant une cha\u00eene unique<\/h2>\n<h3>3.1 Formulation \u00e9l\u00e9mentaire de la clause WHERE avec CONTAINS<\/h3>\n<p>L&rsquo;impl\u00e9mentation op\u00e9rationnelle fondamentale de l&rsquo;extraction par sous-cha\u00eene textuelle repose sur l&rsquo;assemblage standard d&rsquo;une projection et d&rsquo;une restriction unitaire. Consid\u00e9rons un registre matriciel d&rsquo;incidents informatiques document\u00e9 au sein de la plage <code>A2:D500<\/code>, dans lequel la colonne <code>A<\/code> collige les num\u00e9ros de ticket, la colonne <code>B<\/code> le service \u00e9metteur, la colonne <code>C<\/code> la description narrative du dysfonctionnement et la colonne <code>D<\/code> le niveau de s\u00e9v\u00e9rit\u00e9 attribu\u00e9.<\/p>\n<p>Si la finalit\u00e9 de l&rsquo;investigation consiste \u00e0 isoler l&rsquo;int\u00e9gralit\u00e9 des dysfonctionnements mat\u00e9riels affectant sp\u00e9cifiquement les disques de stockage, la formule se structure de la mani\u00e8re suivante :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT A, B, C WHERE C CONTAINS 'disque'\"; 0)<\/code><\/p>\n<p>Dans ce sch\u00e9ma \u00e9l\u00e9mentaire, l&rsquo;analyste fait le choix d&rsquo;exclure d\u00e9lib\u00e9r\u00e9ment la colonne <code>D<\/code> du flux de restitution en sp\u00e9cifiant <code>SELECT A, B, C<\/code>, all\u00e9geant ainsi la charge cognitive de lecture tout en extrayant uniquement les attributs requis. Lors de l&rsquo;\u00e9valuation s\u00e9quentielle de chaque tuple d&rsquo;enregistrement, le compilateur proc\u00e8de \u00e0 une analyse textuelle approfondie de la cellule correspondante dans la colonne <code>C<\/code>. Si la suite de caract\u00e8res alphab\u00e9tiques d-i-s-q-u-e est rep\u00e9r\u00e9e en position pr\u00e9fixe (ex. : \u00ab\u00a0disque satur\u00e9\u00a0\u00bb), m\u00e9diane (ex. : \u00ab\u00a0remplacement disque n\u00e9cessaire\u00a0\u00bb) ou terminale (ex. : \u00ab\u00a0panne sur le disque\u00a0\u00bb), le pr\u00e9dicat est valid\u00e9 et la rang\u00e9e est restitu\u00e9e.<\/p>\n<p>Il importe de souligner l&rsquo;int\u00e9r\u00eat analytique d&rsquo;une telle extraction unitaire. Elle permet d&rsquo;op\u00e9rer un forage vertical imm\u00e9diat au sein de gisements de commentaires libres non structur\u00e9s, r\u00e9v\u00e9lant des patterns lexicaux r\u00e9currents sans exiger la mise en \u0153uvre pr\u00e9alable d&rsquo;algorithmes complexes de traitement automatique du langage naturel.<\/p>\n<h3>3.2 Gestion des caract\u00e8res sp\u00e9ciaux et des apostrophes dans le terme cible<\/h3>\n<p>Une complexit\u00e9 technique majeure surgit lorsque la cha\u00eene litt\u00e9rale cibl\u00e9e pour l&rsquo;extraction int\u00e8gre elle-m\u00eame un caract\u00e8re structurellement utilis\u00e9 par le moteur d&rsquo;interpr\u00e9tation pour d\u00e9limiter les param\u00e8tres, en premier lieu l&rsquo;apostrophe droite simple (caract\u00e8re ASCII 39). Dans la langue fran\u00e7aise, l&rsquo;\u00e9lision grammaticale et l&rsquo;usage fr\u00e9quent d&rsquo;articles contract\u00e9s (tels que \u00ab\u00a0l&rsquo;ordinateur\u00a0\u00bb, \u00ab\u00a0d&rsquo;exploitation\u00a0\u00bb, \u00ab\u00a0l&rsquo;acc\u00e8s\u00a0\u00bb) rendent cette situation omnipr\u00e9sente.<\/p>\n<p>Si l&rsquo;analyste r\u00e9dige sans pr\u00e9caution l&rsquo;expression suivante :<br \/>\n<code>=QUERY(A2:D500; \"WHERE C CONTAINS 'l'acc\u00e8s'\"; 0)<\/code><br \/>\nLe parseur lexical identifie l&rsquo;apostrophe situ\u00e9e imm\u00e9diatement apr\u00e8s la lettre <code>l<\/code> comme la balise fermant la cha\u00eene litt\u00e9rale ouverte avant cette m\u00eame lettre. En cons\u00e9quence, les caract\u00e8res subs\u00e9quents <code>acc\u00e8s'<\/code> sont interpr\u00e9t\u00e9s comme des \u00e9l\u00e9ments d&rsquo;instruction syntaxique non reconnus, brisant instantan\u00e9ment la compilation et renvoyant une erreur de syntaxe irr\u00e9m\u00e9diable de type <code>INVALID_QUERY<\/code>.<\/p>\n<p>Pour contourner cet \u00e9cueil architectural, plusieurs protocoles formels existent. Le premier consiste \u00e0 \u00e9chapper le caract\u00e8re conflictuel en le faisant pr\u00e9c\u00e9der d&rsquo;une barre oblique invers\u00e9e (<code>'<\/code>) au sein de la cha\u00eene de commande, signalant ainsi explicitement au compilateur que l&rsquo;apostrophe doit \u00eatre trait\u00e9e comme un caract\u00e8re litt\u00e9ral brut et non comme un op\u00e9rateur d&rsquo;encadrement s\u00e9mantique. Une seconde technique, particuli\u00e8rement robuste lors de la g\u00e9n\u00e9ration dynamique de cha\u00eenes, consiste \u00e0 recourir \u00e0 la fonction de manipulation textuelle <code>SUBSTITUTE<\/code> ou \u00e0 scinder la cha\u00eene globale en concat\u00e9nant explicitement les guillemets et apostrophes via la fonction <code>CHAR(39)<\/code>.<\/p>\n<p>Concernant les caract\u00e8res diacritiques propres \u00e0 la langue fran\u00e7aise (accents aigus, graves, circonflexes, c\u00e9dilles, tr\u00e9mas), le moteur de l&rsquo;API Google Visualization les traite avec une fid\u00e9lit\u00e9 binaire absolue bas\u00e9e sur la table Unicode. En pratique, la lettre <code>e<\/code>, la lettre <code>\u00e9<\/code> et la lettre <code>\u00e8<\/code> sont morphologiquement et num\u00e9riquement ind\u00e9pendantes. L&rsquo;ex\u00e9cution de <code>where C contains 'systeme'<\/code> n&rsquo;extraira sous aucun pr\u00e9texte les cellules consignant \u00ab\u00a0syst\u00e8me\u00a0\u00bb. Cette rigueur impose une synchronisation diacritique parfaite entre le terme formul\u00e9 dans la requ\u00eate et l&rsquo;orthographe r\u00e9elle des enregistrements sous surveillance.<\/p>\n<h3>3.3 Comportement du moteur face aux cellules vides et aux non-occurrences<\/h3>\n<p>L&rsquo;une des caract\u00e9ristiques les plus d\u00e9routantes de la fonction <code>QUERY<\/code> pour les utilisateurs non initi\u00e9s r\u00e9side dans son protocole de restitution lorsque aucun enregistrement ne valide le pr\u00e9dicat de la clause <code>WHERE<\/code>. Contrairement aux fonctions classiques de recherche (telles que <code>VLOOKUP<\/code> ou <code>MATCH<\/code>) qui l\u00e8vent imm\u00e9diatement l&rsquo;exception d&rsquo;erreur <code>#N\/A<\/code> lorsqu&rsquo;une recherche est infructueuse, <code>QUERY<\/code> adopte un comportement purement relationnel : elle renvoie un ensemble vide.<\/p>\n<p>Toutefois, la mat\u00e9rialisation physique de cet ensemble vide dans l&rsquo;interface de Google Sheets d\u00e9pend \u00e9troitement du troisi\u00e8me argument de la formule relatif aux en-t\u00eates. Si la formule a sp\u00e9cifi\u00e9 la pr\u00e9sence de lignes d&rsquo;en-t\u00eate (par exemple <code>1<\/code>), le r\u00e9sultat visible se bornera \u00e0 dupliquer les \u00e9tiquettes de colonnes au point d&rsquo;insertion, sans qu&rsquo;aucune ligne de donn\u00e9es n&rsquo;apparaisse sous celles-ci. Si le param\u00e8tre d&rsquo;en-t\u00eate a \u00e9t\u00e9 fix\u00e9 \u00e0 <code>0<\/code> et qu&rsquo;aucune ligne ne correspond au crit\u00e8re <code>CONTAINS<\/code>, la cellule r\u00e9ceptrice demeure visuellement immacul\u00e9e ou g\u00e9n\u00e8re parfois une exception textuelle d&rsquo;absence d&rsquo;\u00e9l\u00e9ments.<\/p>\n<p>Pour pr\u00e9venir la d\u00e9sorientation des utilisateurs finaux et consolider l&rsquo;exp\u00e9rience applicative au sein de tableaux de bord de production, il est fortement pr\u00e9conis\u00e9 d&rsquo;encapsuler la formule d&rsquo;extraction textuelle au sein d&rsquo;une structure conditionnelle pr\u00e9ventive de type <code>IFERROR<\/code>, compl\u00e9t\u00e9e par un test dimensionnel. Par exemple :<\/p>\n<p><code>=IFERROR(QUERY(A2:D500; \"SELECT * WHERE C CONTAINS 'mat\u00e9riel'\"; 0); \"Aucune occurrence identifi\u00e9e\")<\/code><\/p>\n<p>Ce patron de conception garantit qu&rsquo;en cas de non-occurrence int\u00e9grale, l&rsquo;application ne laissera pas une plage d&rsquo;affichage ambigu\u00eb mais affichera explicitement un message de substitution informant l&rsquo;op\u00e9rateur de la vacuit\u00e9 s\u00e9mantique des r\u00e9sultats pour le crit\u00e8re consid\u00e9r\u00e9.<\/p>\n<h2>4. Logique d&rsquo;exclusion : Filtrage des lignes ne contenant pas une cha\u00eene<\/h2>\n<h3>4.1 Syntaxe de la n\u00e9gation logique avec NOT CONTAINS<\/h3>\n<p>L&rsquo;inversion de la polarit\u00e9 logique d&rsquo;une extraction textuelle r\u00e9pond \u00e0 des n\u00e9cessit\u00e9s analytiques tout aussi imp\u00e9ratives que la s\u00e9lection positive. Il s&rsquo;agit alors de retrancher d&rsquo;un corpus d&rsquo;observations l&rsquo;ensemble des enregistrements renfermant un marqueur textuel identifi\u00e9 comme non pertinent, obsol\u00e8te ou parasitaire. Dans le langage de Google Visualization, cette op\u00e9ration est orchestr\u00e9e par l&rsquo;application de l&rsquo;op\u00e9rateur unaire de n\u00e9gation <code>NOT<\/code>.<\/p>\n<p>La morphologie syntaxique impose un positionnement rigoureux de l&rsquo;op\u00e9rateur en amont imm\u00e9diat du pr\u00e9dicat qu&rsquo;il alt\u00e8re. La construction canonique s&rsquo;articule ainsi :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE NOT C CONTAINS 'annul\u00e9'\"; 0)<\/code><\/p>\n<p>Il convient de noter une tol\u00e9rance structurelle dans le formalisme du moteur : l&rsquo;analyste peut \u00e9galement positionner l&rsquo;op\u00e9rateur avant l&rsquo;identifiant de colonne, ou encadrer l&rsquo;expression affirmative entre parenth\u00e8ses pr\u00e9c\u00e9d\u00e9es de la n\u00e9gation, sous la forme <code>WHERE NOT (C CONTAINS 'annul\u00e9')<\/code>. Cette derni\u00e8re formulation est d&rsquo;ailleurs hautement recommand\u00e9e par les canons de la clart\u00e9 algorithmique, dans la mesure o\u00f9 elle l\u00e8ve toute ambigu\u00eft\u00e9 th\u00e9orique quant au champ d&rsquo;application de l&rsquo;inversion bool\u00e9enne.<\/p>\n<p>Sur le plan de la logique des pr\u00e9dicats, la table de v\u00e9rit\u00e9 associ\u00e9e est rigoureusement invers\u00e9e : toute ligne dont le contenu de la colonne examin\u00e9e contient la s\u00e9quence textuelle cible g\u00e9n\u00e8re une valeur interne <code>TRUE<\/code> lors de l&rsquo;\u00e9valuation du sous-bloc <code>CONTAINS<\/code>, valeur qui est imm\u00e9diatement transmut\u00e9e en <code>FALSE<\/code> par l&rsquo;op\u00e9rateur <code>NOT<\/code>, pronon\u00e7ant l&rsquo;expulsion irr\u00e9vocable de la ligne du jeu de r\u00e9sultats final.<\/p>\n<h3>4.2 Traitement des valeurs nulles et cellules vides sous n\u00e9gation<\/h3>\n<p>L&rsquo;usage de la n\u00e9gation logique via <code>NOT CONTAINS<\/code> rec\u00e8le l&rsquo;un des pi\u00e8ges les plus insidieux et les plus mal document\u00e9s du moteur d&rsquo;\u00e9valuation de Google Sheets : la disparition silencieuse des cellules vides ou non renseign\u00e9es. Ce ph\u00e9nom\u00e8ne d\u00e9coule directement de la logique tri-valu\u00e9e inh\u00e9rente aux syst\u00e8mes relationnels manipulant le concept d&rsquo;inconnu ou de valeur nulle (<code>NULL<\/code>).<\/p>\n<p>Lorsqu&rsquo;une cellule de la colonne cible est rigoureusement vide, son \u00e9tat s\u00e9mantique pour le moteur n&rsquo;est pas une cha\u00eene de caract\u00e8res de longueur z\u00e9ro, mais une absence de valeur. Lorsque l&rsquo;expression <code>C CONTAINS 'annul\u00e9'<\/code> est confront\u00e9e \u00e0 une telle cellule, le r\u00e9sultat de la comparaison ne peut \u00eatre ni <code>TRUE<\/code> ni <code>FALSE<\/code>, car aucune comparaison textuelle n&rsquo;est mat\u00e9riellement possible sur le vide absolu. L&rsquo;op\u00e9ration renvoie donc un \u00e9tat logique ind\u00e9termin\u00e9 (<code>NULL<\/code>). Or, en application des th\u00e9or\u00e8mes fondamentaux de la logique relationnelle, l&rsquo;application de l&rsquo;op\u00e9rateur unaire <code>NOT<\/code> \u00e0 un \u00e9tat <code>NULL<\/code> renvoie invariablement l&rsquo;\u00e9tat <code>NULL<\/code>.<\/p>\n<p>Le filtrage de la clause <code>WHERE<\/code> rejetant sans exception toute rang\u00e9e dont l&rsquo;\u00e9valuation globale ne produit pas explicitement la constante bool\u00e9enne <code>TRUE<\/code>, <strong>toutes les lignes comportant une cellule vide dans la colonne cible sont impitoyablement purg\u00e9es du r\u00e9sultat final<\/strong>. L&rsquo;analyste croyant na\u00efvement avoir s\u00e9lectionn\u00e9 \u00ab\u00a0toutes les commandes non annul\u00e9es\u00a0\u00bb s&rsquo;apercevra r\u00e9trospectivement qu&rsquo;il a \u00e9galement exclu l&rsquo;int\u00e9gralit\u00e9 des commandes n&rsquo;ayant fait l&rsquo;objet d&rsquo;aucun commentaire textuel explicatif.<\/p>\n<p>Pour restaurer l&rsquo;int\u00e9grit\u00e9 de l&rsquo;extraction et pr\u00e9server la compl\u00e9tude des donn\u00e9es, il est m\u00e9thodologiquement imp\u00e9ratif d&rsquo;int\u00e9grer une clause de r\u00e9habilitation explicite des cellules vides au moyen de l&rsquo;op\u00e9rateur sp\u00e9cialis\u00e9 <code>IS NULL<\/code>, encapsul\u00e9 au sein d&rsquo;une disjonction logique :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE (NOT C CONTAINS 'annul\u00e9') OR C IS NULL\"; 0)<\/code><\/p>\n<p>Cette architecture conjonctive blind\u00e9e assure que la rang\u00e9e sera retenue soit si elle contient un texte explicite exempt du terme proscrit, soit si elle n&rsquo;a fait l&rsquo;objet d&rsquo;aucune saisie textuelle, prot\u00e9geant ainsi l&rsquo;\u00e9chantillon d&rsquo;une atrophie quantitative injustifi\u00e9e.<\/p>\n<h3>4.3 Distinction analytique entre non-contenance et non-\u00e9galit\u00e9<\/h3>\n<p>Il s&rsquo;av\u00e8re fondamental d&rsquo;\u00e9tablir une ligne de d\u00e9marcation \u00e9pist\u00e9mologique nette entre l&rsquo;op\u00e9rateur de non-\u00e9galit\u00e9 (<code>!=<\/code> ou <code>&lt;&gt;<\/code>) et l&rsquo;instruction de non-contenance (<code>NOT ... CONTAINS<\/code>). Bien que ces deux instruments poursuivent une intention g\u00e9n\u00e9rale de rejet, leur p\u00e9rim\u00e8tre d&rsquo;action sur le volume de donn\u00e9es diverge radicalement.<\/p>\n<p>Consid\u00e9rons un \u00e9chantillon d&rsquo;enregistrements logistiques o\u00f9 une colonne consigne la localisation des entrep\u00f4ts sous des libell\u00e9s tels que \u00ab\u00a0Paris-Nord\u00a0\u00bb, \u00ab\u00a0Paris-Sud\u00a0\u00bb, \u00ab\u00a0Lyon-Centre\u00a0\u00bb et \u00ab\u00a0Marseille-Port\u00a0\u00bb. Si l&rsquo;on applique le crit\u00e8re de non-\u00e9galit\u00e9 <code>WHERE A != 'Paris'<\/code>, l&rsquo;int\u00e9gralit\u00e9 des enregistrements mentionn\u00e9s sera restitu\u00e9e dans le tableau de sortie. En effet, la cha\u00eene \u00ab\u00a0Paris-Nord\u00a0\u00bb \u00e9tant physiquement diff\u00e9rente de la cha\u00eene isol\u00e9e \u00ab\u00a0Paris\u00a0\u00bb, l&rsquo;assertion d&rsquo;in\u00e9galit\u00e9 est rigoureusement exacte pour chaque enregistrement.<\/p>\n<p>\u00c0 l&rsquo;inverse, l&rsquo;application de la non-contenance <code>WHERE NOT A CONTAINS 'Paris'<\/code> proc\u00e8de \u00e0 un balayage sous-jacent beaucoup plus intrusif. Elle identifiera l&rsquo;inclusion lexicale de la particule \u00ab\u00a0Paris\u00a0\u00bb au sein de \u00ab\u00a0Paris-Nord\u00a0\u00bb et de \u00ab\u00a0Paris-Sud\u00a0\u00bb, pronon\u00e7ant l&rsquo;\u00e9viction de ces deux classes d&rsquo;observations pour ne conserver strictement que \u00ab\u00a0Lyon-Centre\u00a0\u00bb et \u00ab\u00a0Marseille-Port\u00a0\u00bb.<\/p>\n<p>Cette divergence d\u00e9montre que l&rsquo;op\u00e9rateur de non-\u00e9galit\u00e9 ne peut traiter que des cat\u00e9gories conceptuellement discr\u00e8tes et uniformis\u00e9es, tandis que la non-contenance op\u00e8re au niveau infra-cat\u00e9goriel, ce qui la rend indispensable pour purger des donn\u00e9es contenant des variantes combinatoires ou des commentaires additifs non standardis\u00e9s.<\/p>\n<h2>5. Combinaisons disjonctives : Inclusion de plusieurs cha\u00eenes potentielles (OR)<\/h2>\n<h3>5.1 Construction d&rsquo;arborescences logiques \u00e0 l&rsquo;aide de l&rsquo;op\u00e9rateur OR<\/h3>\n<p>L&rsquo;exploration analytique de corpus volumineux exige fr\u00e9quemment la s\u00e9lection d&rsquo;observations satisfaisant au moins une condition parmi une pluralit\u00e9 d&rsquo;options textuelles pr\u00e9d\u00e9finies. Dans le langage de requ\u00eate de Google Sheets, cette flexibilit\u00e9 est m\u00e9di\u00e9e par l&rsquo;op\u00e9rateur logique disjonctif <code>OR<\/code>. Sa vocation est d&rsquo;\u00e9largir l&rsquo;ensemble de sortie en agr\u00e9geant les enregistrements validant l&rsquo;un quelconque des pr\u00e9dicats formul\u00e9s.<\/p>\n<p>La r\u00e8gle d&rsquo;or r\u00e9gissant l&rsquo;\u00e9criture des clauses disjonctives au sein de l&rsquo;API Google Visualization stipule la r\u00e9p\u00e9tition formelle et obligatoire de l&rsquo;op\u00e9rande colonnaire pour chaque membre de la disjonction. Une formulation abr\u00e9g\u00e9e calqu\u00e9e sur le langage naturel, telle que l&rsquo;aberration syntaxique <code>WHERE A CONTAINS 'Alpha' OR 'B\u00eata'<\/code>, est cat\u00e9goriquement rejet\u00e9e par le parseur lexical et g\u00e9n\u00e8re une erreur d&rsquo;analyse fatale. La syntaxe canonique exige une d\u00e9claration sym\u00e9trique int\u00e9grale :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE A CONTAINS 'Alpha' OR A CONTAINS 'B\u00eata'\"; 0)<\/code><\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/contain1.png\" alt=\"\" \/><\/figure>\n<p>Lors du cycle d&rsquo;ex\u00e9cution, le moteur traite ces pr\u00e9dicats selon le principe computationnel de l&rsquo;\u00e9valuation court-circuit\u00e9e (short-circuit evaluation). Pour un enregistrement donn\u00e9, le compilateur \u00e9value d&rsquo;abord le pr\u00e9dicat primaire <code>A CONTAINS 'Alpha'<\/code>. Si cette condition est r\u00e9solue par la valeur de v\u00e9rit\u00e9 <code>TRUE<\/code>, le moteur valide imm\u00e9diatement l&rsquo;admissibilit\u00e9 de la ligne sans proc\u00e9der \u00e0 l&rsquo;\u00e9valuation computationally co\u00fbteuse du second pr\u00e9dicat <code>A CONTAINS 'B\u00eata'<\/code>, puisque la pr\u00e9sence d&rsquo;un seul terme vrai suffit \u00e0 satisfaire la table de v\u00e9rit\u00e9 de la disjonction. Ce m\u00e9canisme optimise substantiellement la vitesse de calcul lors du traitement de dizaines de milliers d&rsquo;enregistrements.<\/p>\n<h3>5.2 R\u00e8gles de pr\u00e9c\u00e9dence et parenth\u00e9tisation rigoureuse<\/h3>\n<p>D\u00e8s lors qu&rsquo;une requ\u00eate entrem\u00eale des op\u00e9rateurs de disjonction (<code>OR<\/code>) et des op\u00e9rateurs de conjonction (<code>AND<\/code>), l&rsquo;analyste p\u00e9n\u00e8tre sur un terrain \u00e0 haut risque m\u00e9thodologique en raison des lois de pr\u00e9c\u00e9dence des op\u00e9rateurs bool\u00e9ens. Conform\u00e9ment aux principes universels de l&rsquo;alg\u00e8bre de Boole, l&rsquo;op\u00e9rateur <code>AND<\/code> dispose d&rsquo;une priorit\u00e9 hi\u00e9rarchique absolue sur l&rsquo;op\u00e9rateur <code>OR<\/code>. Il agit conceptuellement comme une multiplication logique, tandis que l&rsquo;op\u00e9rateur disjonctif op\u00e8re comme une addition logique.<\/p>\n<p>Consid\u00e9rons l&rsquo;instruction suivante, r\u00e9dig\u00e9e sans pr\u00e9cautions typographiques particuli\u00e8res :<br \/>\n<code>=QUERY(A2:D500; \"SELECT * WHERE A CONTAINS 'France' OR A CONTAINS 'Espagne' AND B CONTAINS 'Valid\u00e9'\"; 0)<\/code><br \/>\nEn raison de la pr\u00e9c\u00e9dence native de l&rsquo;op\u00e9rateur <code>AND<\/code>, le compilateur regroupe structurellement les pr\u00e9dicats sous la forme implicite suivante : <em>\u00ab\u00a0S\u00e9lectionner toutes les lignes concernant la France, quelle que soit leur validation, ainsi que toutes les lignes concernant l&rsquo;Espagne qui sont simultan\u00e9ment valid\u00e9es\u00a0\u00bb<\/em>. L&rsquo;analyste qui escomptait extraire les dossiers valid\u00e9s pour l&rsquo;un ou l&rsquo;autre de ces deux territoires g\u00e9ographiques verra son jeu de donn\u00e9es lourdement vici\u00e9 par l&rsquo;incorporation de dossiers fran\u00e7ais rejet\u00e9s ou en cours de traitement.<\/p>\n<p>L&rsquo;unique rempart m\u00e9thodologique contre cette d\u00e9rive interpr\u00e9tative r\u00e9side dans la parenth\u00e9tisation explicite, pr\u00e9ventive et syst\u00e9matique des blocs disjonctifs. La formulation rigoureuse devient imp\u00e9rativement :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE (A CONTAINS 'France' OR A CONTAINS 'Espagne') AND B CONTAINS 'Valid\u00e9'\"; 0)<\/code><\/p>\n<p>En encapsulant les deux conditions g\u00e9ographiques au sein de parenth\u00e8ses ferm\u00e9es, l&rsquo;analyste force le compilateur \u00e0 r\u00e9soudre la disjonction en tant qu&rsquo;entit\u00e9 logique unitaire pr\u00e9alable, dont la valeur de v\u00e9rit\u00e9 globale est ensuite transmise \u00e0 l&rsquo;op\u00e9rateur conjonctif, r\u00e9tablissant ainsi la conformit\u00e9 rigoureuse du filtrage avec l&rsquo;intention analytique initiale.<\/p>\n<h3>5.3 Factorisation et lisibilit\u00e9 des requ\u00eates disjonctives complexes<\/h3>\n<p>Lorsque le protocole de s\u00e9lection requiert le filtrage simultan\u00e9 d&rsquo;une vaste taxonomie lexicale (par exemple, identifier la pr\u00e9sence d&rsquo;une dizaine ou d&rsquo;une vingtaine de mots-cl\u00e9s alternatifs au sein d&rsquo;une m\u00eame colonne), la syntaxe bas\u00e9e sur l&rsquo;accumulation s\u00e9rielle d&rsquo;op\u00e9rateurs <code>OR<\/code> engendre une d\u00e9gradation dramatique de la lisibilit\u00e9 et de la maintenabilit\u00e9 du code applicatif. La formule prend alors une ampleur hypertrophi\u00e9e :<\/p>\n<p><code>WHERE A CONTAINS 'terme1' OR A CONTAINS 'terme2' OR A CONTAINS 'terme3' ... OR A CONTAINS 'termeN'<\/code><\/p>\n<p>Cette verbosit\u00e9 excessive multiplie exponentiellement le risque d&rsquo;erreurs d&rsquo;inattention, telles que l&rsquo;omission d&rsquo;une apostrophe de fermeture ou la substitution erron\u00e9e d&rsquo;un d\u00e9limiteur logique. De surcro\u00eet, toute modification ult\u00e9rieure de la taxonomie impose une intervention chirurgicale et p\u00e9rilleuse au sein de la longue cha\u00eene de caract\u00e8res de la formule.<\/p>\n<p>Face \u00e0 ce goulet d&rsquo;\u00e9tranglement ergonomique, l&rsquo;analyste dispose de deux alternatives de conception avanc\u00e9es. La premi\u00e8re consiste \u00e0 extraire la cha\u00eene de condition vers une cellule matricielle d\u00e9di\u00e9e, au sein de laquelle la clause textuelle est dynamiquement synth\u00e9tis\u00e9e au moyen de fonctions de concat\u00e9nation de listes, telles que <code>JOIN<\/code> ou <code>TEXTJOIN<\/code>. La seconde alternative, hautement sup\u00e9rieure sur le plan de la compacit\u00e9 algorithmique, consiste \u00e0 abandonner l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> au profit de l&rsquo;op\u00e9rateur d&rsquo;expression r\u00e9guli\u00e8re <code>MATCHES<\/code>, dont la structure supporte nativement l&rsquo;alternative par m\u00e9tacaract\u00e8re sans exiger la r\u00e9it\u00e9ration redondante des identifiants colonnaires.<\/p>\n<h2>6. Combinaisons conjonctives : Crit\u00e8res de contenance simultan\u00e9s (AND)<\/h2>\n<h3>6.1 Intersection textuelle sur une m\u00eame colonne d&rsquo;observation<\/h3>\n<p>L&rsquo;intersection conjonctive textuelle mat\u00e9rialis\u00e9e par l&rsquo;op\u00e9rateur <code>AND<\/code> r\u00e9pond \u00e0 un imp\u00e9ratif analytique d&rsquo;une grande rigueur : isoler exclusivement les observations qui concentrent simultan\u00e9ment une pluralit\u00e9 de marqueurs s\u00e9mantiques distincts au sein d&rsquo;un m\u00eame champ textuel. Cette technique trouve une utilit\u00e9 de premier ordre dans l&rsquo;analyse de questions ouvertes, d&rsquo;enqu\u00eates de satisfaction, de dossiers d&rsquo;audit ou de flux d&rsquo;actualit\u00e9s financi\u00e8res.<\/p>\n<p>Consid\u00e9rons une situation o\u00f9 un auditeur cherche \u00e0 isoler les comptes-rendus d&rsquo;\u00e9valuation faisant \u00e9tat de difficult\u00e9s techniques li\u00e9es sp\u00e9cifiquement \u00e0 la bande passante du r\u00e9seau de t\u00e9l\u00e9communication. Si l&rsquo;on recherche uniquement le terme \u00ab\u00a0r\u00e9seau\u00a0\u00bb, l&rsquo;extraction sera excessivement pollu\u00e9e par des mentions organisationnelles (\u00ab\u00a0r\u00e9seau de distribution\u00a0\u00bb, \u00ab\u00a0r\u00e9seau de comp\u00e9tences\u00a0\u00bb). Si l&rsquo;on recherche isol\u00e9ment \u00ab\u00a0bande passante\u00a0\u00bb, on risque d&rsquo;omettre des formulations elliptiques. La conjonction textuelle apporte la solution :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE C CONTAINS 'r\u00e9seau' AND C CONTAINS 'saturation'\"; 0)<\/code><\/p>\n<p>Ce sch\u00e9ma syntaxique contraint le moteur \u00e0 soumettre chaque enregistrement \u00e0 une double inspection s\u00e9quentielle. Seules les rang\u00e9es dont la cellule correspondante int\u00e8gre l&rsquo;occurrence \u00ab\u00a0r\u00e9seau\u00a0\u00bb <strong>et<\/strong> l&rsquo;occurrence \u00ab\u00a0saturation\u00a0\u00bb franchiront le pr\u00e9dicat, ind\u00e9pendamment de leur ordre d&rsquo;apparition respectif dans la cellule et de la distance lexicale s\u00e9parant ces deux vocables. Cette ind\u00e9pendance topologique conf\u00e8re \u00e0 la conjonction textuelle une robustesse consid\u00e9rablement accrue par rapport \u00e0 la recherche d&rsquo;une phrase fig\u00e9e.<\/p>\n<h3>6.2 Filtrage crois\u00e9 \u00e0 travers des colonnes multidimensionnelles<\/h3>\n<p>La puissance d&rsquo;investigation relationnelle de la clause conjonctive s&rsquo;illustre particuli\u00e8rement lors du croisement de variables qualitatives distribu\u00e9es sur des axes dimensionnels distincts de la base de donn\u00e9es. Dans cette configuration, le filtre agit comme un dispositif de s\u00e9lection matricielle crois\u00e9e permettant de tester des hypoth\u00e8ses de recherche complexes.<\/p>\n<p>Imaginons une base de donn\u00e9es d&rsquo;essais cliniques multicentriques structur\u00e9e selon les coordonn\u00e9es suivantes : colonne <code>A<\/code> d\u00e9signant le centre hospitalier de rattachement, colonne <code>B<\/code> colligeant le protocole th\u00e9rapeutique administr\u00e9, colonne <code>C<\/code> documentant les effets secondaires ind\u00e9sirables d\u00e9clar\u00e9s et colonne <code>D<\/code> r\u00e9pertoriant les ant\u00e9c\u00e9dents m\u00e9dicaux du patient. Une \u00e9tude m\u00e9thodologique visant \u00e0 \u00e9valuer les manifestations allergiques cutan\u00e9es chez des patients recevant une mol\u00e9cule sp\u00e9cifique au sein d&rsquo;un p\u00f4le hospitalier d\u00e9fini s&rsquo;articulera formellement ainsi :<\/p>\n<p><code>=QUERY(A2:D5000; \"SELECT A, B, C, D WHERE A CONTAINS 'Bordeaux' AND B CONTAINS 'Mol\u00e9cule-X' AND C CONTAINS 'cutan\u00e9'\"; 0)<\/code><\/p>\n<p>Du point de vue du co\u00fbt computationnel, il est strat\u00e9giquement avantageux de positionner en t\u00eate de cha\u00eene conjonctive les pr\u00e9dicats portant sur les colonnes pr\u00e9sentant le plus fort pouvoir discriminant ou le taux de cardinalit\u00e9 le plus restreint. Bien que l&rsquo;optimiseur de requ\u00eates de Google Visualization applique ses propres m\u00e9canismes de rationalisation, le rejet pr\u00e9coce d&rsquo;enregistrements volumineux lors des premiers tests conjonctifs all\u00e8ge la charge de traitement des sous-cha\u00eenes sur les colonnes narratives subs\u00e9quentes, garantissant une fluidit\u00e9 de recalcul optimale au sein du classeur.<\/p>\n<h3>6.3 Gestion des incompatibilit\u00e9s logiques et des ensembles vides<\/h3>\n<p>L&rsquo;accumulation effr\u00e9n\u00e9e de contraintes conjonctives expose in\u00e9vitablement l&rsquo;analyste \u00e0 l&rsquo;\u00e9mergence d&rsquo;incompatibilit\u00e9s s\u00e9mantiques ou de conditions mutuellement exclusives aboutissant \u00e0 la gen\u00e8se syst\u00e9matique d&rsquo;ensembles de donn\u00e9es vides. Il convient de distinguer avec une extr\u00eame rigueur la vacuit\u00e9 logique r\u00e9sultant de l&rsquo;incompatibilit\u00e9 des crit\u00e8res et l&rsquo;erreur d&rsquo;ex\u00e9cution d\u00e9coulant d&rsquo;une anomalie syntaxique.<\/p>\n<p>Consid\u00e9rons le pr\u00e9dicat contradictoire suivant :<br \/>\n<code>WHERE A CONTAINS 'Statut: Clos' AND A CONTAINS 'Statut: Ouvert'<\/code><br \/>\nSi le processus m\u00e9tier sous-jacent consigne le statut sous la forme d&rsquo;une valeur textuelle unitaire et exclusive \u00e0 l&rsquo;int\u00e9rieur de la colonne <code>A<\/code>, aucune observation empirique ne pourra simultan\u00e9ment h\u00e9berger ces deux s\u00e9quences de caract\u00e8res concurrentes. Le moteur renverra in\u00e9luctablement un jeu d&rsquo;enregistrements vide. Face \u00e0 un \u00e9cran sans donn\u00e9es, l&rsquo;analyste inexp\u00e9riment\u00e9 suspectera fr\u00e9quemment, \u00e0 tort, une corruption de la formule ou un dysfonctionnement de la feuille de calcul, alors que le moteur relationnel a ex\u00e9cut\u00e9 avec une fid\u00e9lit\u00e9 math\u00e9matique impeccable une commande logiquement contradictoire.<\/p>\n<p>Le diagnostic de ces anomalies m\u00e9thodologiques requiert la mise en \u0153uvre d&rsquo;un protocole de validation d\u00e9constructive pas-\u00e0-pas. L&rsquo;op\u00e9rateur doit scinder temporairement l&rsquo;instruction conjonctive en requ\u00eates unitaires ind\u00e9pendantes : tester isol\u00e9ment <code>WHERE A CONTAINS 'Statut: Clos'<\/code> dans une cellule t\u00e9moin, puis tester <code>WHERE A CONTAINS 'Statut: Ouvert'<\/code> dans une cellule contigu\u00eb. L&rsquo;observation des volumes partiels restitu\u00e9s permet d&rsquo;identifier l&rsquo;\u00e9tape d&rsquo;effondrement dimensionnel et de corriger l&rsquo;architecture logique, le plus souvent en convertissant une conjonction ill\u00e9gitime (<code>AND<\/code>) en une disjonction appropri\u00e9e (<code>OR<\/code>).<\/p>\n<h2>7. Neutralisation de la sensibilit\u00e9 \u00e0 la casse (Case-Insensitive Filtering)<\/h2>\n<h3>7.1 Normalisation syntaxique via LOWER et UPPER<\/h3>\n<p>Comme d\u00e9montr\u00e9 pr\u00e9c\u00e9demment, la sensibilit\u00e9 intrins\u00e8que de l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> aux majuscules et minuscules constitue un handicap s\u00e9v\u00e8re pour l&rsquo;extraction de donn\u00e9es textuelles non assainies. Pour pallier cette rigidit\u00e9 sans corrompre physiquement la typographie du jeu de donn\u00e9es source, le formalisme de l&rsquo;API Google Visualization met \u00e0 la disposition des praticiens deux fonctions de transformation scalaire : <code>lower()<\/code> et <code>upper()<\/code>.<\/p>\n<p>Le protocole d&rsquo;insensibilisation repose sur un principe math\u00e9matique \u00e9l\u00e9mentaire de projection homomorphe : convertir unilat\u00e9ralement l&rsquo;int\u00e9gralit\u00e9 du texte de la colonne observ\u00e9e dans un registre typologique unique (les minuscules par exemple), tout en veillant \u00e0 fournir au comparateur un terme cible formul\u00e9 strictement dans ce m\u00eame registre. Le sch\u00e9ma d&rsquo;impl\u00e9mentation op\u00e9rationnel prend la forme suivante :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE lower(C) CONTAINS 'maintenance'\"; 0)<\/code><\/p>\n<p>Analysons avec minutie la cin\u00e9tique computationnelle de cette instruction :<\/p>\n<ul>\n<li>Pour chaque rang\u00e9e trait\u00e9e, le compilateur extrait temporairement en m\u00e9moire tampon le contenu textuel de la cellule <code>C<\/code>.<\/li>\n<li>La fonction <code>lower(C)<\/code> transfigure imm\u00e9diatement chaque glyphe majuscule en son \u00e9quivalent minuscule standardis\u00e9, sans alt\u00e9rer la donn\u00e9e inscrite dans la cellule source.<\/li>\n<li>L&rsquo;op\u00e9rateur <code>CONTAINS<\/code> confronte alors cette repr\u00e9sentation normalis\u00e9e au litt\u00e9ral de recherche, obligatoirement saisi en minuscules : <code>'maintenance'<\/code>.<\/li>\n<\/ul>\n<p>D\u00e8s lors, que la cellule source contienne \u00ab\u00a0MAINTENANCE\u00a0\u00bb, \u00ab\u00a0Maintenance\u00a0\u00bb, \u00ab\u00a0mAiNtEnAnCe\u00a0\u00bb ou \u00ab\u00a0maintenance pr\u00e9ventive\u00a0\u00bb, la concordance devient totale et inalt\u00e9rable. L&rsquo;invariance d&rsquo;\u00e9chelle typologique est ainsi garantie avec une rigueur absolue, \u00e9liminant d&rsquo;un coup l&rsquo;ensemble des faux n\u00e9gatifs imputables aux al\u00e9as de la saisie.<\/p>\n<h3>7.2 Impacts sur les performances de calcul des tables massives<\/h3>\n<p>Si la standardisation dynamique par <code>lower()<\/code> ou <code>upper()<\/code> s&rsquo;impose par sa supr\u00e9matie logique, elle induit n\u00e9anmoins un tribut computationnel non n\u00e9gligeable qu&rsquo;il convient d&rsquo;\u00e9valuer avec lucidit\u00e9 lors de la manipulation de matrices de donn\u00e9es massives (d\u00e9passant plusieurs dizaines de milliers d&rsquo;enregistrements).<\/p>\n<p>Dans une requ\u00eate statique native de type <code>WHERE C CONTAINS 'terme'<\/code>, le moteur d&rsquo;\u00e9valuation peut exploiter des m\u00e9canismes d&rsquo;indexation interne et de recherche s\u00e9quentielle directe optimis\u00e9e en m\u00e9moire bas niveau. En revanche, l&rsquo;introduction de la fonction scalaire <code>lower(C)<\/code> force le processeur de calcul \u00e0 ex\u00e9cuter une transformation dynamique caract\u00e8re par caract\u00e8re sur chaque enregistrement de la colonne consid\u00e9r\u00e9e pr\u00e9alablement au test d&rsquo;inclusion s\u00e9quentiel. Cette op\u00e9ration multiplie substantiellement le nombre de cycles CPU r\u00e9clam\u00e9s pour finaliser le rendu matriciel.<\/p>\n<p>Sur des corpus particuli\u00e8rement imposants ou des classeurs interconnect\u00e9s subissant des rafra\u00eechissements constants, cette surcharge algorithmique se traduit par une latence d&rsquo;affichage sensible et l&rsquo;apparition r\u00e9currente de l&rsquo;ic\u00f4ne de progression du calcul en boucle. Dans ce cas de figure extr\u00eame, la meilleure pratique d&rsquo;ing\u00e9nierie des donn\u00e9es consiste \u00e0 d\u00e9porter le co\u00fbt de standardisation typologique hors de la formule <code>QUERY<\/code> : on adjoindra en amont \u00e0 la table brute une colonne auxiliaire normalis\u00e9e calcul\u00e9e via la formule matricielle <code>=ARRAYFORMULA(LOWER(C2:C))<\/code>. Il suffit alors de pointer l&rsquo;op\u00e9rateur direct <code>CONTAINS<\/code> sur cette colonne pr\u00e9-calcul\u00e9e, restaurant instantan\u00e9ment une vitesse d&rsquo;ex\u00e9cution optimale.<\/p>\n<h3>7.3 Alternatives fonctionnelles pour la recherche insensible<\/h3>\n<p>Au-del\u00e0 de la manipulation structurelle par <code>lower()<\/code>, il existe des trajectoires alternatives au sein de Google Sheets pour neutraliser la contrainte de casse lors d&rsquo;extractions complexes. La voie la plus puissante r\u00e9side dans l&rsquo;exploitation de l&rsquo;op\u00e9rateur d&rsquo;expression r\u00e9guli\u00e8re <code>MATCHES<\/code> coupl\u00e9 \u00e0 un drapeau de configuration (flag) d&rsquo;insensibilit\u00e9 typographique.<\/p>\n<p>En substituant la syntaxe d&rsquo;expression r\u00e9guli\u00e8re \u00e0 l&rsquo;op\u00e9rateur de sous-cha\u00eene direct, la requ\u00eate prend la forme suivante :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE C MATCHES '(?i).*audit.*'\"; 0)<\/code><\/p>\n<p>Le pr\u00e9fixe r\u00e9gulier <code>(?i)<\/code> instruit formellement le moteur d&rsquo;expression r\u00e9guli\u00e8re de faire abstraction int\u00e9grale de la distinction majuscule\/minuscule pour l&rsquo;ensemble du motif qui lui succ\u00e8de. Cette approche technique pr\u00e9sente l&rsquo;immense avantage de s&rsquo;ex\u00e9cuter sans exiger l&rsquo;appel explicite \u00e0 la fonction scalaire d&rsquo;encapsulation <code>lower()<\/code> sur la variable colonnaire, offrant une lisibilit\u00e9 algorithmique remarquable pour les praticiens aguerris au formalisme des regex.<\/p>\n<p>N\u00e9anmoins, cette flexibilit\u00e9 accrue a pour contrepartie d&rsquo;engager le moteur de calcul sur un algorithme d&rsquo;automates finis non d\u00e9terministes inh\u00e9rent aux expressions r\u00e9guli\u00e8res, dont l&#8217;empreinte m\u00e9moire peut se r\u00e9v\u00e9ler sup\u00e9rieure \u00e0 celle d&rsquo;une simple v\u00e9rification de sous-cha\u00eene standard sur des cha\u00eenes de caract\u00e8res extr\u00eamement denses.<\/p>\n<h2>8. Dynamisation des crit\u00e8res par injection de r\u00e9f\u00e9rences cellulaires<\/h2>\n<h3>8.1 Principes de concat\u00e9nation de cha\u00eenes dans la formule QUERY<\/h3>\n<p>L&rsquo;\u00e9dification de tableaux de bord analytiques interactifs et d&rsquo;outils d&rsquo;exploration flexibles exige d&rsquo;affranchir la requ\u00eate de ses valeurs litt\u00e9rales fig\u00e9es afin de lier organiquement les crit\u00e8res de s\u00e9lection aux interactions de l&rsquo;utilisateur final. Cela requiert l&rsquo;injection dynamique du contenu de cellules de commande externes au c\u0153ur de la clause textuelle de la fonction <code>QUERY<\/code>.<\/p>\n<p>Cette technique op\u00e9rationnelle repose sur le m\u00e9canisme de segmentation et de concat\u00e9nation de cha\u00eenes textuelles au moyen de l&rsquo;op\u00e9rateur esperluette (<code>&amp;<\/code>). Pour ins\u00e9rer la valeur d&rsquo;une cellule r\u00e9ceptrice \u2014 d\u00e9signons arbitrairement la cellule <code>G1<\/code> \u2014 au sein du pr\u00e9dicat <code>CONTAINS<\/code>, l&rsquo;analyste doit imp\u00e9rativement ma\u00eetriser la topologie de l&rsquo;imbrication des d\u00e9limiteurs typographiques. La construction rigoureuse s&rsquo;articule selon la s\u00e9quence s\u00e9quentielle exacte :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE C CONTAINS '\" &amp; G1 &amp; \"'\"; 0)<\/code><\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/contain2.png\" alt=\"\" \/><\/figure>\n<p>La d\u00e9composition analytique pas-\u00e0-pas de cette s\u00e9quence s&rsquo;av\u00e8re indispensable pour en saisir la m\u00e9canique formelle :<\/p>\n<ul>\n<li>Le premier segment textuel <code>\"SELECT * WHERE C CONTAINS '\"<\/code> ouvre la cha\u00eene de commande principale entre guillemets doubles, pose le mot-cl\u00e9 <code>CONTAINS<\/code> et pr\u00e9pare l&rsquo;ouverture de l&rsquo;apostrophe simple requise par l&rsquo;API pour encapsuler le futur litt\u00e9ral.<\/li>\n<li>Le premier guillemet double met temporairement fin \u00e0 la cha\u00eene de commande brute pour autoriser l&rsquo;intervention du moteur de calcul du tableur.<\/li>\n<li>Le premier op\u00e9rateur de concat\u00e9nation <code>&amp;<\/code> capture la valeur r\u00e9sidente de la coordonn\u00e9e <code>G1<\/code> et la convertit en cha\u00eene de caract\u00e8res.<\/li>\n<li>Le second op\u00e9rateur <code>&amp;<\/code> raccorde cette valeur au dernier segment textuel <code>\"'\"<\/code>.<\/li>\n<li>Le dernier segment, ouvert par un guillemet double, renferme l&rsquo;apostrophe simple fermante indispensable pour clore le terme de recherche aux yeux du compilateur Google Visualization, avant d&rsquo;\u00eatre lui-m\u00eame scell\u00e9 par l&rsquo;ultime guillemet double.<\/li>\n<\/ul>\n<p>Toute d\u00e9viation typographique minime dans cette alternance m\u00e9ticuleuse de guillemets doubles et d&rsquo;apostrophes simples engendre in\u00e9luctablement une erreur de compilation textuelle imm\u00e9diate.<\/p>\n<h3>8.2 S\u00e9curisation contre les caract\u00e8res d\u00e9stabilisateurs et l&rsquo;injection<\/h3>\n<p>L&rsquo;ouverture d&rsquo;une requ\u00eate dynamique aux saisies libres d&rsquo;op\u00e9rateurs tiers introduit une vuln\u00e9rabilit\u00e9 logicielle majeure : le ph\u00e9nom\u00e8ne d&rsquo;injection involontaire ou d\u00e9stabilisatrice de syntaxe. Si l&rsquo;utilisateur consigne dans la cellule de commande <code>G1<\/code> un vocable incorporant une apostrophe simple (par exemple le mot <code>l'alerte<\/code>), cette saisie innocente va briser instantan\u00e9ment l&rsquo;architecture concat\u00e9n\u00e9e de la formule.<\/p>\n<p>En reprenant la formule standard :<br \/>\n<code>\"SELECT * WHERE C CONTAINS '\" &amp; G1 &amp; \"'\"<\/code><br \/>\nL&rsquo;injection textuelle produira la cha\u00eene finale compil\u00e9e suivante :<br \/>\n<code>SELECT * WHERE C CONTAINS 'l'alerte'<\/code><br \/>\nLe compilateur interpr\u00e8te la seconde apostrophe comme la terminaison lexicale du crit\u00e8re et tente d&rsquo;interpr\u00e9ter le fragment r\u00e9siduel <code>alerte'<\/code> comme un op\u00e9rateur d&rsquo;instruction, ce qui fait \u00e9chouer instantan\u00e9ment la formule avec l&rsquo;affichage d&rsquo;un message d&rsquo;erreur d&rsquo;analyse cryptique pour l&rsquo;utilisateur final.<\/p>\n<p>Pour immuniser l&rsquo;outil d\u00e9cisionnel contre cette fragilit\u00e9 structurelle, l&rsquo;ing\u00e9nierie des donn\u00e9es prescrit d&rsquo;assainir syst\u00e9matiquement l&rsquo;entr\u00e9e cellulaire au moyen de la fonction textuelle <code>SUBSTITUTE<\/code> avant sa fusion au sein du flux d&rsquo;interrogation. Le patron de conception s\u00e9curis\u00e9 s&rsquo;\u00e9tablit comme suit :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE C CONTAINS '\" &amp; SUBSTITUTE(G1; \"'\"; \"'\") &amp; \"'\"; 0)<\/code><\/p>\n<p>Ce blindage computationnel intercepte chaque occurrence d&rsquo;apostrophe brute saisie dans la cellule de pilotage et lui adjoint pr\u00e9ventivement une barre oblique d&rsquo;\u00e9chappement. Ainsi transmise au compilateur, la valeur conflictuelle est neutralis\u00e9e dans sa dimension structurelle et trait\u00e9e exclusivement comme un composant litt\u00e9ral inoffensif, pr\u00e9servant la stabilit\u00e9 absolue de l&rsquo;interface d&rsquo;interrogation.<\/p>\n<h3>8.3 Conception d&rsquo;interfaces de recherche et tableaux de bord interactifs<\/h3>\n<p>L&rsquo;int\u00e9gration d&rsquo;une extraction dynamique par <code>CONTAINS<\/code> au c\u0153ur d&rsquo;un tableau de bord d\u00e9cisionnel interactif soul\u00e8ve une exigence fonctionnelle critique : la gestion rigoureuse de l&rsquo;\u00e9tat vacant de la cellule de commande. Dans la plupart des architectures de tableaux de bord, lorsque la cellule de saisie de recherche (<code>G1<\/code>) est purg\u00e9e de tout contenu par l&rsquo;utilisateur, l&rsquo;intention sous-jacente est d&rsquo;afficher l&rsquo;int\u00e9gralit\u00e9 du jeu d&rsquo;enregistrements disponible, et non de restituer une page vide.<\/p>\n<p>Or, si la cellule <code>G1<\/code> est vide, l&rsquo;expression <code>CONTAINS '\"\"'<\/code> recherche formellement la sous-cha\u00eene vide. Si cette condition peut th\u00e9oriquement valider l&rsquo;ensemble des cellules textuelles, elle risque de se comporter de fa\u00e7on impr\u00e9visible ou d&rsquo;exclure les enregistrements comportant des valeurs nulles. Pour orchestrer un comportement ergonomique sans faille, il convient d&rsquo;associer la fonction <code>QUERY<\/code> \u00e0 une structure conditionnelle pr\u00e9alable <code>IF<\/code> \u00e9valuant l&rsquo;\u00e9tat de vacuit\u00e9 de la cellule de commande via <code>ISBLANK<\/code> :<\/p>\n<p><code>=IF(ISBLANK(G1); QUERY(A2:D500; \"SELECT *\"; 0); QUERY(A2:D500; \"SELECT * WHERE lower(C) CONTAINS '\" &amp; LOWER(SUBSTITUTE(G1; \"'\"; \"'\")) &amp; \"'\"; 0))<\/code><\/p>\n<p>Dans ce mod\u00e8le de conception applicative :<\/p>\n<ul>\n<li>Si la cellule de recherche <code>G1<\/code> ne renferme aucune saisie textuelle, la premi\u00e8re branche conditionnelle ex\u00e9cute une s\u00e9lection int\u00e9grale de la plage sans appliquer la moindre clause de restriction <code>WHERE<\/code>, garantissant l&rsquo;affichage sans entrave de l&rsquo;ensemble des tuples de donn\u00e9es.<\/li>\n<li>D\u00e8s lors qu&rsquo;un op\u00e9rateur consigne un terme de recherche, la seconde branche s&rsquo;active dynamiquement, appliquant l&rsquo;assainissement anti-apostrophe et la normalisation en minuscules pour d\u00e9livrer une s\u00e9lection chirurgicale insensible \u00e0 la casse.<\/li>\n<\/ul>\n<p>Cette approche m\u00e9ticuleuse transforme une simple feuille de calcul en une interface d&rsquo;interrogation semi-professionnelle robuste et hautement tol\u00e9rante aux manipulations exploratoires.<\/p>\n<h2>9. Extension avanc\u00e9e : Transition vers l&rsquo;op\u00e9rateur MATCHES et les REGEX<\/h2>\n<h3>9.1 Limites intrins\u00e8ques de CONTAINS face aux motifs complexes<\/h3>\n<p>En d\u00e9pit de son \u00e9l\u00e9gance syntaxique ind\u00e9niable, l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> pr\u00e9sente des limites conceptuelles strictes d\u00e8s lors que la logique de filtrage d\u00e9passe la simple inclusion d&rsquo;une s\u00e9quence lin\u00e9aire de caract\u00e8res fixes. Par conception m\u00eame, <code>CONTAINS<\/code> s&rsquo;av\u00e8re incapable d&rsquo;interpr\u00e9ter le contexte structural ou syntaxique entourant la sous-cha\u00eene recherch\u00e9e.<\/p>\n<p>La premi\u00e8re limitation r\u00e9dhibitoire concerne l&rsquo;absence totale de reconnaissance des fronti\u00e8res de mots (word boundaries). Si l&rsquo;analyste recherche l&rsquo;occurrence du mot \u00ab\u00a0car\u00a0\u00bb (au sens de v\u00e9hicule automobile) via l&rsquo;instruction <code>WHERE A CONTAINS 'car'<\/code>, le moteur extraira aveugl\u00e9ment les rang\u00e9es mentionnant \u00ab\u00a0carte\u00a0\u00bb, \u00ab\u00a0placard\u00a0\u00bb, \u00ab\u00a0carrelage\u00a0\u00bb, \u00ab\u00a0\u00e9cart\u00a0\u00bb, \u00ab\u00a0anachor\u00e8te\u00a0\u00bb ou \u00ab\u00a0brancardier\u00a0\u00bb. La sous-cha\u00eene \u00e9tant physiquement pr\u00e9sente dans chacun de ces termes sans lien s\u00e9mantique avec le concept vis\u00e9, l&rsquo;\u00e9chantillon extrait se trouvera lourdement parasit\u00e9 par un bruit lexical prohibitif.<\/p>\n<p>La seconde limitation majeure a trait \u00e0 l&rsquo;incapacit\u00e9 d&rsquo;imposer des ancrages topologiques stricts (exiger que la s\u00e9quence apparaisse exclusivement au tout d\u00e9but ou \u00e0 l&rsquo;extr\u00eame fin de la cha\u00eene) ou de g\u00e9rer des motifs probabilistes (tels que la pr\u00e9sence d&rsquo;une s\u00e9quence de chiffres d&rsquo;un format sp\u00e9cifique). Face \u00e0 de telles exigences d&rsquo;ing\u00e9nierie textuelle, l&rsquo;abandon m\u00e9thodologique de <code>CONTAINS<\/code> au profit de l&rsquo;op\u00e9rateur <code>MATCHES<\/code> devient un imp\u00e9ratif technique cat\u00e9gorique.<\/p>\n<h3>9.2 Syntaxe de l&rsquo;expression r\u00e9guli\u00e8re \u00e9quivalente \u00e0 CONTAINS<\/h3>\n<p>L&rsquo;op\u00e9rateur <code>MATCHES<\/code> exploite l&rsquo;expressivit\u00e9 int\u00e9grale des <a rel=\"noopener noreferrer\" href=\"https:\/\/www.regular-expressions.info\/\">expressions r\u00e9guli\u00e8res<\/a> (standard Java Regex impl\u00e9ment\u00e9 au sein de l&rsquo;API Google Visualization). Cependant, une disparit\u00e9 d&rsquo;\u00e9valuation fondamentale doit \u00eatre imp\u00e9rativement assimil\u00e9e : alors que <code>CONTAINS<\/code> teste l&rsquo;existence d&rsquo;une sous-cha\u00eene locale, l&rsquo;op\u00e9rateur <code>MATCHES<\/code> exige que l&rsquo;expression r\u00e9guli\u00e8re d\u00e9crive et englobe <strong>l&rsquo;int\u00e9gralit\u00e9 textuelle absolue de la cellule examin\u00e9e<\/strong>, du premier au dernier caract\u00e8re.<\/p>\n<p>En cons\u00e9quence, pour concevoir avec <code>MATCHES<\/code> un filtre fonctionnellement strictement \u00e9quivalent \u00e0 <code>CONTAINS 'terme'<\/code>, il est indispensable d&rsquo;adjoindre des motifs d&rsquo;absorption universels de part et d&rsquo;autre de la cible. Le sch\u00e9ma s&rsquo;\u00e9tablit formellement comme suit :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE C MATCHES '.*terme.*'\"; 0)<\/code><\/p>\n<p>Dans ce formalisme r\u00e9gulier, le m\u00e9tacaract\u00e8re point (<code>.<\/code>) repr\u00e9sente n&rsquo;importe quel caract\u00e8re arbitraire, tandis que l&rsquo;ast\u00e9risque quantificateur (<code>*<\/code>) autorise la r\u00e9p\u00e9tition de ce caract\u00e8re de z\u00e9ro \u00e0 une infinit\u00e9 de fois. L&rsquo;expression <code>.*<\/code> situ\u00e9e en amont et en aval de la cible autorise l&rsquo;existence de n&rsquo;importe quel pr\u00e9fixe ou suffixe textuel, \u00e9mulant ainsi \u00e0 la perfection le comportement de base de <code>CONTAINS<\/code>.<\/p>\n<p>L&rsquo;avantage d\u00e9cisif de cette transition r\u00e9side dans l&rsquo;immense flexibilit\u00e9 subsidiaire imm\u00e9diatement d\u00e9verrouill\u00e9e :<\/p>\n<ul>\n<li><strong>Alternative compacte :<\/strong> <code>C MATCHES '.*(Alpha|B\u00eata|Gamma).*'<\/code> permet de remplacer \u00e9l\u00e9gamment une cascade interminable de clauses <code>OR CONTAINS<\/code>.<\/li>\n<li><strong>Fronti\u00e8res de mots strictes :<\/strong> <code>C MATCHES '.*bcarb.*'<\/code> isole strictement le mot \u00ab\u00a0car\u00a0\u00bb en tant qu&rsquo;entit\u00e9 lexicale autonome, \u00e9liminant radicalement \u00ab\u00a0carte\u00a0\u00bb ou \u00ab\u00a0placard\u00a0\u00bb.<\/li>\n<li><strong>Insensibilit\u00e9 native \u00e0 la casse :<\/strong> L&rsquo;adjonction initiale du drapeau <code>(?i)<\/code>, sous la forme <code>C MATCHES '(?i).*terme.*'<\/code>, garantit une neutralisation typographique totale sans n\u00e9cessiter l&rsquo;appel \u00e0 la fonction <code>lower()<\/code>.<\/li>\n<\/ul>\n<h3>9.3 \u00c9valuation comparative des performances : CONTAINS contre MATCHES<\/h3>\n<p>L&rsquo;accroissement de la puissance expressive apport\u00e9 par <code>MATCHES<\/code> s&rsquo;accompagne d&rsquo;une complexit\u00e9 algorithmique intrins\u00e8quement sup\u00e9rieure qu&rsquo;il convient de jauger avec discernement dans l&rsquo;arbitrage architectural de vos mod\u00e8les de donn\u00e9es.<\/p>\n<p>L&rsquo;op\u00e9rateur <code>CONTAINS<\/code> repose sur des algorithmes d&rsquo;analyse sous-textuelle d\u00e9terministes hautement sp\u00e9cialis\u00e9s (de la classe des algorithmes de type Boyer-Moore ou Knuth-Morris-Pratt). Ces algorithmes effectuent des sauts optimis\u00e9s au sein du flux de caract\u00e8res de chaque cellule sans maintenir d&rsquo;\u00e9tats d&rsquo;ex\u00e9cution complexes. La consommation de m\u00e9moire vive et la charge d&rsquo;instruction processeur demeurent par cons\u00e9quent remarquablement r\u00e9duites.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, l&rsquo;op\u00e9rateur <code>MATCHES<\/code> mobilise un moteur complet d&rsquo;analyse d&rsquo;expressions r\u00e9guli\u00e8res compilant des automates \u00e0 \u00e9tats finis. D\u00e8s lors que l&rsquo;expression int\u00e8gre des quantificateurs universels gloutons (tels que <code>.*<\/code>) coupl\u00e9s \u00e0 des alternatives multiples, le processeur peut \u00eatre contraint d&rsquo;op\u00e9rer des retours sur trace substantiels (backtracking) lorsque la cha\u00eene examin\u00e9e s&rsquo;av\u00e8re longue et complexe. Sur un tableau de bord sollicitant des milliers de rang\u00e9es, le recours aveugle et indiscrimin\u00e9 \u00e0 <code>MATCHES<\/code> en lieu et place d&rsquo;un simple <code>CONTAINS<\/code> peut induire une d\u00e9gradation mesurable du temps de restitution global du document.<\/p>\n<p>La doctrine m\u00e9thodologique pr\u00e9conise donc une approche hi\u00e9rarchis\u00e9e : privil\u00e9gier syst\u00e9matiquement la frugalit\u00e9 computationnelle et la clart\u00e9 syntaxique de <code>CONTAINS<\/code> pour toutes les op\u00e9rations ordinaires de filtrage de sous-cha\u00eenes lin\u00e9aires, et r\u00e9server l&rsquo;arsenal de <code>MATCHES<\/code> exclusivement aux cas d&rsquo;usage d\u00e9montrant une r\u00e9elle n\u00e9cessit\u00e9 de reconnaissance de motifs variables ou d&rsquo;alternances lexicales massives.<\/p>\n<h2>10. Gestion des anomalies de typage et robustesse des donn\u00e9es<\/h2>\n<h3>10.1 La r\u00e8gle de la majorit\u00e9 typologique dans les colonnes Google Sheets<\/h3>\n<p>L&rsquo;un des vecteurs les plus insidieux de corruption silencieuse des extractions r\u00e9side dans l&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 des types de donn\u00e9es au sein d&rsquo;une m\u00eame coordonn\u00e9e colonnaire. Comme esquiss\u00e9 lors des d\u00e9veloppements th\u00e9oriques pr\u00e9liminaires, l&rsquo;API Google Visualization applique de mani\u00e8re coercitive la r\u00e8gle de la majorit\u00e9 typologique pour d\u00e9terminer le contrat de service applicable \u00e0 chaque colonne de la plage <code>donn\u00e9es<\/code>.<\/p>\n<p>Supposons une colonne colligeant des codes d&rsquo;inventaire d&rsquo;\u00e9quipements au sein de laquelle 80 % des entr\u00e9es sont rigoureusement num\u00e9riques (ex. : <code>104928<\/code>, <code>205839<\/code>), tandis que 20 % des enregistrements r\u00e9cents int\u00e8grent des lettres alphab\u00e9tiques en raison d&rsquo;une modification de nomenclature (ex. : <code>REF-3049<\/code>, <code>REF-8921<\/code>). Lors de la compilation de la requ\u00eate, le moteur analyse la colonne et d\u00e9cr\u00e8te, sur la base de la pr\u00e9pond\u00e9rance statistique des premi\u00e8res rang\u00e9es, que l&rsquo;attribut est de nature exclusivement num\u00e9rique.<\/p>\n<p>La cons\u00e9quence op\u00e9rationnelle est irr\u00e9vocable : lors de la phase d&rsquo;ingestion des donn\u00e9es en m\u00e9moire, tous les enregistrements alphanum\u00e9riques (<code>REF-3049<\/code>, etc.) sont d\u00e9truits et remplac\u00e9s par des valeurs nulles (<code>null<\/code>). Si l&rsquo;analyste formule par la suite une requ\u00eate d&rsquo;inspection textuelle :<br \/>\n<code>=QUERY(A2:D500; \"SELECT * WHERE A CONTAINS 'REF'\"; 0)<\/code><br \/>\nLe r\u00e9sultat ne restituera absolument aucune ligne. L&rsquo;analyste sera alors induit dans l&rsquo;erreur tragique de croire que la base de donn\u00e9es ne contient aucun \u00e9quipement correspondant \u00e0 la nouvelle nomenclature, alors m\u00eame que ces enregistrements existent physiquement dans la grille de calcul, mais ont \u00e9t\u00e9 vaporis\u00e9s par le moteur d&rsquo;\u00e9valuation en amont m\u00eame de l&rsquo;ex\u00e9cution du filtre <code>WHERE<\/code>.<\/p>\n<h3>10.2 Filtrage textuel de colonnes contenant des valeurs num\u00e9riques ou dates<\/h3>\n<p>La r\u00e8gle typologique interdit formellement d&rsquo;appliquer directement l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> \u00e0 une colonne dont le type dominant est num\u00e9rique ou temporel. Si une colonne collige des codes postaux, des dates de transaction ou des montants de facturation cat\u00e9goris\u00e9s comme nombres par le tableur, l&rsquo;expression <code>WHERE A CONTAINS '75'<\/code> d\u00e9clenchera une rupture imm\u00e9diate de type <code>PARSE_ERROR<\/code>, le compilateur signalant l&rsquo;impossibilit\u00e9 s\u00e9mantique d&rsquo;appliquer un op\u00e9rateur de sous-cha\u00eene textuelle \u00e0 une valeur scalaire num\u00e9rique.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/contain3.png\" alt=\"\" \/><\/figure>\n<p>Pour contourner ce verrou structurel et autoriser la recherche de sous-cha\u00eenes au sein de donn\u00e9es chiffr\u00e9es sans devoir reconfigurer manuellement l&rsquo;int\u00e9gralit\u00e9 du classeur source, il convient de forcer une coercition de type universelle en amont de l&rsquo;injection dans la fonction <code>QUERY<\/code>. Cette m\u00e9tamorphose est op\u00e9r\u00e9e en encapsulant la plage source au sein d&rsquo;une transformation matricielle via la fonction <code>TO_TEXT<\/code> :<\/p>\n<p><code>=QUERY(INDEX(TO_TEXT(A2:D500)); \"SELECT Col1, Col2 WHERE Col1 CONTAINS '75'\"; 0)<\/code><\/p>\n<p>Ce patron de conception technique impose deux ajustements fondamentaux :<\/p>\n<ul>\n<li>L&rsquo;association de <code>INDEX(TO_TEXT(...))<\/code> op\u00e8re une conversion instantan\u00e9e de l&rsquo;int\u00e9gralit\u00e9 des cellules de la plage en cha\u00eenes de caract\u00e8res pures en m\u00e9moire vive, neutralisant la r\u00e8gle de la majorit\u00e9 typologique et homog\u00e9n\u00e9isant l&rsquo;ensemble du corpus sur le type textuel.<\/li>\n<li>La plage n&rsquo;\u00e9tant plus une r\u00e9f\u00e9rence directe de cellules mais un tableau virtuel g\u00e9n\u00e9r\u00e9 en m\u00e9moire, la syntaxe de d\u00e9signation des colonnes bascule obligatoirement de la notation par lettres alphab\u00e9tiques standard (<code>A<\/code>, <code>B<\/code>, <code>C<\/code>) vers la notation positionnelle formalis\u00e9e <code>Col1<\/code>, <code>Col2<\/code>, <code>Col3<\/code>. L&rsquo;usage accidentel des lettres au sein d&rsquo;une plage virtuelle transform\u00e9e l\u00e8verait une exception de colonne introuvable.<\/li>\n<\/ul>\n<h3>10.3 R\u00e9solution des conflits de formatage et de standardisation<\/h3>\n<p>M\u00eame au sein de colonnes rigoureusement textuelles, la pr\u00e9sence d&rsquo;art\u00e9facts de saisie imperceptibles \u00e0 l&rsquo;\u0153il nu constitue une cause permanente de d\u00e9faillance des crit\u00e8res <code>CONTAINS<\/code>. Les pollutions typographiques les plus fr\u00e9quentes sont les espaces p\u00e9riph\u00e9riques superflus (espaces ins\u00e9cables ou espaces simples plac\u00e9s en t\u00eate ou en queue de texte) et les retours \u00e0 la ligne r\u00e9siduels issus d&rsquo;op\u00e9rations de copier-coller depuis des syst\u00e8mes externes.<\/p>\n<p>Si la cellule contient la cha\u00eene <code>\" Rapport \"<\/code> (environn\u00e9e de deux espaces) et que l&rsquo;analyste injecte dynamiquement un crit\u00e8re rigoureusement nettoy\u00e9 <code>\"Rapport\"<\/code>, l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> validera la concordance. Toutefois, la situation inverse s&rsquo;av\u00e8re hautement pr\u00e9judiciable : si la cellule de recherche utilisateur comporte par m\u00e9garde un espace terminal involontaire (<code>\"Rapport \"<\/code>) alors que les donn\u00e9es de la base n&rsquo;int\u00e8grent aucun espace subs\u00e9quent (<code>\"Rapport financier\"<\/code> est valid\u00e9, mais <code>\"Rapport\"<\/code> isol\u00e9 en fin de cellule \u00e9chouera), le pr\u00e9dicat rejettera les enregistrements valides.<\/p>\n<p>L&rsquo;assainissement syst\u00e9matique du flux de travail analytique requiert la mise en place d&rsquo;un protocole d&rsquo;audit de qualit\u00e9 pr\u00e9alable. Il est hautement recommand\u00e9 d&rsquo;assainir la saisie des cellules de commande via l&rsquo;adjonction de la fonction d&rsquo;\u00e9lagage <code>TRIM<\/code> :<\/p>\n<p><code>=QUERY(A2:D500; \"SELECT * WHERE lower(C) CONTAINS '\" &amp; LOWER(TRIM(G1)) &amp; \"'\"; 0)<\/code><\/p>\n<p>Cette mesure prophylactique supprime instantan\u00e9ment toute scorie d&rsquo;espacement au d\u00e9but ou \u00e0 la fin de la cha\u00eene de recherche inject\u00e9e, fiabilisant consid\u00e9rablement le comportement de l&rsquo;infrastructure d&rsquo;interrogation face aux inadvertances ergonomiques de l&rsquo;utilisateur final.<\/p>\n<h2>11. Diagnostic, d\u00e9bogage et r\u00e9solution des erreurs de requ\u00eate<\/h2>\n<h3>11.1 D\u00e9chiffrage des messages d&rsquo;erreur textuels de QUERY<\/h3>\n<p>La mise au point de requ\u00eates complexes confronte in\u00e9luctablement l&rsquo;analyste \u00e0 des alertes d&rsquo;interruption g\u00e9n\u00e9r\u00e9es par le moteur d&rsquo;ex\u00e9cution. L&rsquo;interpr\u00e9tation rigoureuse de ces diagnostics textuels constitue le pr\u00e9requis absolu \u00e0 toute r\u00e9solution m\u00e9thodologique efficiente.<\/p>\n<p>Les messages d&rsquo;erreur les plus pr\u00e9valents dans l&rsquo;usage de <code>CONTAINS<\/code> s&rsquo;ordonnent selon la typologie suivante :<\/p>\n<ul>\n<li><strong><code>#VALUE!<\/code> avec mention <code>PARSE_ERROR<\/code> :<\/strong> Ce diagnostic signale une rupture lexicale irr\u00e9versible au sein de la cha\u00eene de requ\u00eate. Les causes fondamentales en sont quasi-exclusivement l&rsquo;absence d&rsquo;apostrophe fermante autour d&rsquo;un litt\u00e9ral de recherche, l&rsquo;omission d&rsquo;un op\u00e9rateur de liaison (tel que l&rsquo;oubli de <code>AND<\/code> ou de <code>OR<\/code> entre deux assertions), ou la pr\u00e9sence d&rsquo;une apostrophe brute non \u00e9chapp\u00e9e au sein du terme cible.<\/li>\n<li><strong><code>#VALUE!<\/code> avec mention <code>NO_COLUMN<\/code> :<\/strong> Cette erreur survient lorsque la clause <code>WHERE<\/code> ou la clause <code>SELECT<\/code> sollicite un identifiant colonnaire inconnu du sch\u00e9ma d&rsquo;ex\u00e9cution. Les sc\u00e9narios typiques impliquent l&rsquo;utilisation d&rsquo;une lettre alphab\u00e9tique (ex. : <code>WHERE A CONTAINS...<\/code>) au sein d&rsquo;une plage matricielle calcul\u00e9e entre accolades qui n&rsquo;admet que la notation <code>Col1<\/code>, ou l&rsquo;utilisation d&rsquo;une lettre exc\u00e9dant la largeur physique de la plage d\u00e9clar\u00e9e dans le premier argument (par exemple d\u00e9signer <code>E<\/code> alors que la plage s&rsquo;arr\u00eate \u00e0 <code>D500<\/code>).<\/li>\n<li><strong>Absence totale d&rsquo;erreur avec restitution d&rsquo;un r\u00e9sultat vide :<\/strong> Comme d\u00e9montr\u00e9 pr\u00e9c\u00e9demment, cette situation ne traduit pas une anomalie syntaxique, mais une vacuit\u00e9 relationnelle d\u00e9coulant d&rsquo;une sensibilit\u00e9 \u00e0 la casse non prise en charge, d&rsquo;une exclusion silencieuse par n\u00e9gation sur valeurs nulles, ou de l&rsquo;application de <code>CONTAINS<\/code> sur une colonne classifi\u00e9e num\u00e9rique par la r\u00e8gle de la majorit\u00e9.<\/li>\n<\/ul>\n<h3>11.2 Proc\u00e9dures syst\u00e9matiques de d\u00e9bogage des requ\u00eates complexes<\/h3>\n<p>Face \u00e0 une formule complexe r\u00e9calcitrante entrem\u00ealant s\u00e9lections multiples, conjonctions, disjonctions et insensibilisations typographiques, la tentative de correction aveugle au sein de la cellule de calcul finale constitue une faute m\u00e9thodologique majeure. Il convient d&rsquo;appliquer une proc\u00e9dure d&rsquo;isolation progressive descendante hautement formalis\u00e9e.<\/p>\n<p>La premi\u00e8re phase de ce protocole consiste \u00e0 d\u00e9porter la cha\u00eene de requ\u00eate textuelle hors de la formule <code>QUERY<\/code> en l&rsquo;isolant dans une cellule de test adjacente (par exemple <code>Z1<\/code>). On inscrit dans cette cellule la formule de concat\u00e9nation brute :<br \/>\n<code>=\"SELECT * WHERE lower(C) CONTAINS '\" &amp; LOWER(TRIM(G1)) &amp; \"'\"<\/code><br \/>\nCette dissociation permet \u00e0 l&rsquo;analyste de visualiser visuellement la cha\u00eene de commande exactement telle qu&rsquo;elle sera soumise au compilateur de l&rsquo;API Google Visualization, rendant instantan\u00e9ment \u00e9videntes les d\u00e9faillances d&rsquo;apostrophes, les ruptures de guillemets ou les concat\u00e9nations aberrantes.<\/p>\n<p>La seconde phase repose sur la d\u00e9composition modulaire de la clause <code>WHERE<\/code>. L&rsquo;op\u00e9rateur r\u00e9duit initialement la requ\u00eate \u00e0 sa plus simple expression fonctionnelle :<br \/>\n<code>=QUERY(A2:D500; \"SELECT *\"; 0)<\/code><br \/>\nSi cette projection de base fonctionne, l&rsquo;analyste int\u00e8gre individuellement le premier pr\u00e9dicat <code>WHERE C CONTAINS 'valeur'<\/code>. Une fois ce pr\u00e9dicat unitaire valid\u00e9, il lui adjoint la normalisation scalaire <code>lower()<\/code>, puis r\u00e9int\u00e8gre une \u00e0 une les clauses conditionnelles subs\u00e9quentes reli\u00e9es par <code>AND<\/code> ou <code>OR<\/code>. Cette incr\u00e9mentation s\u00e9quentielle permet d&rsquo;identifier \u00e0 la milliseconde pr\u00e8s le fragment syntaxique pr\u00e9cis qui provoque la rupture du moteur de compilation.<\/p>\n<h3>11.3 S\u00e9curisation et maintenance pr\u00e9ventive du mod\u00e8le de donn\u00e9es<\/h3>\n<p>La viabilit\u00e9 op\u00e9rationnelle \u00e0 long terme d&rsquo;un classeur d&rsquo;entreprise reposant sur des requ\u00eates <code>QUERY<\/code> complexes exige l&rsquo;adoption d&rsquo;un ensemble de mesures d&rsquo;ing\u00e9nierie pr\u00e9ventives visant \u00e0 immuniser les formules contre les alt\u00e9rations structurelles courantes de la grille de calcul.<\/p>\n<p>Le risque structurel pr\u00e9dominant r\u00e9side dans l&rsquo;insertion ou la suppression inopin\u00e9e de colonnes par des intervenants tiers au sein de la feuille de calcul source. Si une formule r\u00e9f\u00e9rence en dur les colonnes alphab\u00e9tiques (<code>SELECT A, C WHERE B CONTAINS 'terme'<\/code>) et qu&rsquo;un utilisateur intercale une nouvelle colonne entre les attributs existants, les d\u00e9signations textuelles fig\u00e9es \u00e0 l&rsquo;int\u00e9rieur des guillemets de la cha\u00eene de requ\u00eate <strong>ne s&rsquo;adapteront pas dynamiquement<\/strong>. La colonne <code>B<\/code> continuera d&rsquo;\u00eatre inspect\u00e9e alors qu&rsquo;elle h\u00e9berge d\u00e9sormais un tout autre attribut, ruinant la fiabilit\u00e9 de l&rsquo;extraction.<\/p>\n<p>Pour pr\u00e9venir cette obsolescence accidentelle, deux architectures de haute disponibilit\u00e9 peuvent \u00eatre d\u00e9ploy\u00e9es :<\/p>\n<ul>\n<li><strong>Virtualisation syst\u00e9matique par accolades :<\/strong> En d\u00e9clarant la plage sous la forme <code>{A2:D500}<\/code> et en basculant l&rsquo;ensemble de la syntaxe sous la notation <code>Col1, Col2, Col3<\/code>, on standardise l&rsquo;interrogation sur un ordre ordinal invariant, particuli\u00e8rement adapt\u00e9 si la source est une table de base de donn\u00e9es import\u00e9e dont le sch\u00e9ma est rigide.<\/li>\n<li><strong>Documentation des pr\u00e9dicats et figeage des en-t\u00eates :<\/strong> L&rsquo;interdiction formelle de modifier la structure des en-t\u00eates de colonnes, coupl\u00e9e \u00e0 la sp\u00e9cification syst\u00e9matique et explicite du troisi\u00e8me argument de la formule (au lieu de laisser le moteur le d\u00e9duire), emp\u00eache toute corruption opportuniste de l&rsquo;extraction lors des op\u00e9rations courantes d&rsquo;actualisation de la grille.<\/li>\n<\/ul>\n<h2>12. Applications m\u00e9thodologiques et protocoles d&rsquo;analyse textuelle<\/h2>\n<h3>12.1 Codage et cat\u00e9gorisation th\u00e9matique de corpus qualitatifs<\/h3>\n<p>L&rsquo;extraction de sous-cha\u00eenes au moyen de la fonction <code>QUERY<\/code> trouve un champ d&rsquo;application m\u00e9thodologique d&rsquo;une puissance insoup\u00e7onn\u00e9e dans le traitement syst\u00e9matique de mat\u00e9riaux textuels semi-structur\u00e9s, tels que les transcriptions d&rsquo;entretiens qualitatifs, les retours d&rsquo;exp\u00e9rience d&rsquo;utilisateurs ou les verbatim de questionnaires ouverts. Dans ces disciplines de recherche, le chercheur ou l&rsquo;analyste est constamment confront\u00e9 au d\u00e9fi de cat\u00e9goriser de vastes flux lexicaux en classes s\u00e9mantiques ordonn\u00e9es.<\/p>\n<p>En lieu et place de proc\u00e9dures manuelles d&rsquo;annotation fastidieuses et sujettes \u00e0 l&rsquo;\u00e9puisement cognitif, l&rsquo;analyste peut \u00e9laborer un banc d&rsquo;extraction automatis\u00e9 ventilant dynamiquement les r\u00e9ponses selon un dictionnaire de concepts contr\u00f4l\u00e9s. Supposons un corpus d&rsquo;\u00e9valuations qualitatives collig\u00e9 dans la colonne <code>B<\/code> : l&rsquo;analyste peut cartographier l&rsquo;\u00e9mergence d&rsquo;une th\u00e9matique li\u00e9e \u00e0 la tarification en d\u00e9ployant une formule d\u00e9di\u00e9e au sein d&rsquo;un onglet de synth\u00e8se :<\/p>\n<p><code>=QUERY('Donn\u00e9es Brutes'!A2:C1000; \"SELECT Col1, Col2 WHERE lower(Col2) CONTAINS 'prix' OR lower(Col2) CONTAINS 'tarif' OR lower(Col2) CONTAINS 'co\u00fbt' OR lower(Col2) CONTAINS 'chert\u00e9'\"; 0)<\/code><\/p>\n<p>Cette disposition algorithmique permet d&rsquo;isoler en temps r\u00e9el un sous-ensemble homog\u00e8ne d&rsquo;extraits textuels r\u00e9pondant au champ lexical mon\u00e9taire. La m\u00eame proc\u00e9dure pouvant \u00eatre r\u00e9p\u00e9t\u00e9e parall\u00e8lement pour les dimensions relationnelles, techniques ou ergonomiques, la feuille de calcul se m\u00e9tamorphose en un outil d&rsquo;analyse lexicom\u00e9trique semi-automatis\u00e9 capable de traiter des milliers de lignes de verbatim avec une fid\u00e9lit\u00e9 conceptuelle absolue et reproductible.<\/p>\n<h3>12.2 Segmentation comportementale et textuelle de bases d&rsquo;observations<\/h3>\n<p>Dans le domaine des \u00e9tudes quantitatives et de l&rsquo;analyse comportementale, la capacit\u00e9 \u00e0 segmenter des populations d&rsquo;individus ou de transactions selon des attributs narratifs combin\u00e9s constitue un atout m\u00e9thodologique d\u00e9terminant. La fonction <code>QUERY<\/code> et l&rsquo;op\u00e9rateur <code>CONTAINS<\/code> permettent de cr\u00e9er des cohortes hautement cibl\u00e9es \u00e0 l&rsquo;intersection de multiples variables qualitatives.<\/p>\n<p>Consid\u00e9rons une base d&rsquo;observations exp\u00e9rimentales r\u00e9pertoriant les r\u00e9ponses d&rsquo;usagers soumis \u00e0 divers protocoles de stimulation en sciences comportementales. La colonne <code>A<\/code> consigne l&rsquo;identifiant du sujet, la colonne <code>B<\/code> les annotations descriptives \u00e9mises par les observateurs, la colonne <code>C<\/code> les mesures quantitatives associ\u00e9es et la colonne <code>D<\/code> les m\u00e9tadonn\u00e9es de cohorte d\u00e9mographique. Pour isoler sp\u00e9cifiquement la cohorte d&rsquo;individus ayant manifest\u00e9 des r\u00e9actions textuellement qualifi\u00e9es d&rsquo;anxi\u00e9t\u00e9 ou d&rsquo;h\u00e9sitation motrice, tout en \u00e9liminant les participants ayant re\u00e7u un traitement pr\u00e9alable neutralisant, l&rsquo;\u00e9quation s&rsquo;articule ainsi :<\/p>\n<p><code>=QUERY(A2:D; \"SELECT A, C WHERE (lower(B) CONTAINS 'anxi\u00e9t\u00e9' OR lower(B) CONTAINS 'h\u00e9sitation') AND NOT lower(B) CONTAINS 'placebo'\"; 1)<\/code><\/p>\n<p>Cette approche m\u00e9thodologique permet aux chercheurs de v\u00e9rifier avec une r\u00e9activit\u00e9 instantan\u00e9e des hypoth\u00e8ses de corr\u00e9lation statistique entre des manifestations cliniques document\u00e9es sous forme textuelle et des m\u00e9triques num\u00e9riques observ\u00e9es, illustrant la f\u00e9condit\u00e9 du couplage entre l&rsquo;alg\u00e8bre relationnelle et l&rsquo;investigation empirique dans les feuilles de calcul.<\/p>\n<h3>12.3 Matrice de r\u00e9f\u00e9rence syntaxique pour l&rsquo;op\u00e9rateur CONTAINS<\/h3>\n<p>Le tableau de synth\u00e8se m\u00e9thodologique ci-apr\u00e8s rassemble les principales configurations op\u00e9ratoires de l&rsquo;op\u00e9rateur <code>CONTAINS<\/code>, constituant un r\u00e9pertoire de r\u00e9f\u00e9rence rapide pour la conception et l&rsquo;audit de formules au sein de vos syst\u00e8mes d&rsquo;information :<\/p>\n<table border=\"1\" cellpadding=\"8\" cellspacing=\"0\" style=\"border-collapse:collapse;width:100%;margin-top:20px;margin-bottom:20px\">\n<thead>\n<tr style=\"background-color:#f2f2f2;text-align:left\">\n<th>Objectif Analytique<\/th>\n<th>Mod\u00e8le Syntaxique de R\u00e9f\u00e9rence<\/th>\n<th>Sp\u00e9cificit\u00e9s et Vigilances Critiques<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Inclusion unitaire simple<\/strong><\/td>\n<td><code>WHERE A CONTAINS 'terme'<\/code><\/td>\n<td>Sensibilit\u00e9 stricte \u00e0 la casse typographique. \u00c9chec si la cellule est de type num\u00e9rique majoritaire.<\/td>\n<\/tr>\n<tr>\n<td><strong>Inclusion insensible \u00e0 la casse<\/strong><\/td>\n<td><code>WHERE lower(A) CONTAINS 'terme'<\/code><\/td>\n<td>Garantit la d\u00e9tection quelle que soit la typographie. Le terme cible doit imp\u00e9rativement \u00eatre saisi en minuscules.<\/td>\n<\/tr>\n<tr>\n<td><strong>Exclusion unitaire pure<\/strong><\/td>\n<td><code>WHERE NOT A CONTAINS 'terme'<\/code><\/td>\n<td><strong>Attention :<\/strong> \u00c9limine silencieusement toutes les cellules vides ou nulles de la colonne examin\u00e9e.<\/td>\n<\/tr>\n<tr>\n<td><strong>Exclusion robuste s\u00e9curis\u00e9e<\/strong><\/td>\n<td><code>WHERE (NOT A CONTAINS 'terme') OR A IS NULL<\/code><\/td>\n<td>R\u00e9habilite explicitement les cellules non renseign\u00e9es, pr\u00e9servant la compl\u00e9tude volum\u00e9trique de l&rsquo;\u00e9chantillon.<\/td>\n<\/tr>\n<tr>\n<td><strong>Disjonction lexicale (OU)<\/strong><\/td>\n<td><code>WHERE A CONTAINS 'X' OR A CONTAINS 'Y'<\/code><\/td>\n<td>L&rsquo;identifiant colonnaire doit obligatoirement \u00eatre r\u00e9p\u00e9t\u00e9 pour chaque terme. \u00c9valuation court-circuit\u00e9e.<\/td>\n<\/tr>\n<tr>\n<td><strong>Conjonction simultan\u00e9e (ET)<\/strong><\/td>\n<td><code>WHERE A CONTAINS 'X' AND A CONTAINS 'Y'<\/code><\/td>\n<td>Valide uniquement si les deux cha\u00eenes coexistent dans la cellule, ind\u00e9pendamment de leur disposition ordonn\u00e9e.<\/td>\n<\/tr>\n<tr>\n<td><strong>Injection dynamique d&rsquo;une cellule<\/strong><\/td>\n<td><code>WHERE A CONTAINS '\" &amp; G1 &amp; \"'<\/code><\/td>\n<td>Rupture fatale si <code>G1<\/code> contient une apostrophe. Doit \u00eatre prot\u00e9g\u00e9e par la fonction <code>SUBSTITUTE<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><strong>Recherche textuelle sur nombres\/dates<\/strong><\/td>\n<td><code>WHERE Col1 CONTAINS '99'<\/code> (avec <code>INDEX(TO_TEXT())<\/code>)<\/td>\n<td>Exige la transformation pr\u00e9alable par <code>TO_TEXT<\/code> et le basculement obligatoire en notation <code>ColX<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><strong>Alternative par motif complexe<\/strong><\/td>\n<td><code>WHERE A MATCHES '(?i).*terme.*'<\/code><\/td>\n<td>Mobilise le moteur d&rsquo;expressions r\u00e9guli\u00e8res. \u00c9quivalent \u00e0 <code>CONTAINS<\/code> insensible avec une empreinte calculatoire accrue.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Avant toute exploitation d\u00e9finitive de r\u00e9sultats extraits par ces m\u00e9canismes au sein de publications, rapports d&rsquo;activit\u00e9 ou prises de d\u00e9cision organisationnelles critiques, il est vivement pr\u00e9conis\u00e9 de valider la conformit\u00e9 de l&rsquo;interrogation au moyen de la liste de contr\u00f4le m\u00e9thodologique suivante :<\/p>\n<ul>\n<li>Le troisi\u00e8me param\u00e8tre (<code>en-t\u00eates<\/code>) est-il formellement renseign\u00e9 par une constante enti\u00e8re explicite pour emp\u00eacher les conjectures hasardeuses du moteur ?<\/li>\n<li>La colonne inspect\u00e9e pr\u00e9sente-t-elle un typage textuel majoritaire homog\u00e8ne exempt de corruptions scalaires par des valeurs num\u00e9riques pures ?<\/li>\n<li>La sensibilit\u00e9 \u00e0 la casse a-t-elle \u00e9t\u00e9 pr\u00e9ventivement neutralis\u00e9e via <code>lower()<\/code> si la source d\u00e9coule d&rsquo;une saisie humaine libre non normalis\u00e9e ?<\/li>\n<li>En cas d&rsquo;application de la n\u00e9gation (<code>NOT CONTAINS<\/code>), la pr\u00e9servation des enregistrements vides a-t-elle \u00e9t\u00e9 express\u00e9ment assur\u00e9e par la clause <code>OR Col IS NULL<\/code> ?<\/li>\n<li>Les blocs logiques entrem\u00ealant <code>AND<\/code> et <code>OR<\/code> sont-ils rigoureusement compartiment\u00e9s par des parenth\u00e8ses ferm\u00e9es pour juguler la priorit\u00e9 math\u00e9matique naturelle de la conjonction ?<\/li>\n<li>Les cha\u00eenes de caract\u00e8res inject\u00e9es depuis des coordonn\u00e9es de pilotage externes sont-elles convenablement \u00e9lagu\u00e9es par <code>TRIM<\/code> et expurg\u00e9es de toute apostrophe d\u00e9stabilisatrice par <code>SUBSTITUTE<\/code> ?<\/li>\n<\/ul>\n<p>La mise en \u0153uvre assidue de ces pr\u00e9ceptes garantit une exploitation hautement s\u00e9curis\u00e9e, performante et scientifiquement reproductible des capacit\u00e9s d&rsquo;interrogation textuelle offertes par l&rsquo;\u00e9cosyst\u00e8me Google Sheets, consolidant ainsi la cr\u00e9dibilit\u00e9 et l&rsquo;efficience de vos infrastructures d&rsquo;analyse de donn\u00e9es relationnelles.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Codd, E. F. (1970). A relational model of data for large shared data banks. <em>Communications of the ACM<\/em>, 13(6), 377\u2013387. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1145\/362384.362685\">https:\/\/doi.org\/10.1145\/362384.362685<\/a><\/li>\n<li>Google Developers. (2023). <em>Google Visualization API Query Language (Version 0.7)<\/em>. Google Workspace Documentation. <a rel=\"noopener noreferrer\" href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/querylanguage\">https:\/\/developers.google.com\/chart\/interactive\/docs\/querylanguage<\/a><\/li>\n<li>Google Support. (2024). <em>Fonction QUERY : R\u00e9f\u00e9rence officielle des formules Google Sheets<\/em>. Centre d&rsquo;aide Google. <a rel=\"noopener noreferrer\" href=\"https:\/\/support.google.com\/docs\/answer\/3093343\">https:\/\/support.google.com\/docs\/answer\/3093343<\/a><\/li>\n<li>International Organization for Standardization. (2016). <em>Information technology \u2014 Database languages \u2014 SQL (ISO\/IEC standard n\u00b0 9075:2016)<\/em>. ISO\/IEC. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.iso.org\/standard\/63555.html\">https:\/\/www.iso.org\/standard\/63555.html<\/a><\/li>\n<li>The Unicode Consortium. (2023). <em>The Unicode Standard, Version 15.0<\/em>. Mountain View, CA: The Unicode Consortium. <a rel=\"noopener noreferrer\" href=\"https:\/\/unicode.org\/standard\/standard.html\">https:\/\/unicode.org\/standard\/standard.html<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet sur l&rsquo;utilisation de la fonction QUERY dans Google Sheets pour filtrer et s\u00e9lectionner des lignes contenant une cha\u00eene de texte.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2937,2342],"tags":[9844,9843,9842,6304,5737],"class_list":["post-8917","psych_stat","type-psych_stat","status-publish","hentry","category-analyse-de-donnees","category-bureautique-avancee","tag-analyse-qualitative","tag-contains","tag-filtrage-textuel","tag-fonction-query","tag-google-sheets"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/8917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat"}],"about":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/types\/psych_stat"}],"author":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8917"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/8917\/revisions"}],"predecessor-version":[{"id":8922,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/8917\/revisions\/8922"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}