Probleme requete avec apostrophe

Hello,

un petit problème sur une requête ou je passe en paramètre une cellule contenant un texte avec une aspostrophe

Exemple : j'ai en B3 le texte "Fox's"

Ensuite dans une autre cellule je lance une requete :

=(QUERY('Mafeuille'!$A$2:$AA$1000;"SELECT B,C,X,N WHERE C ='"& B3 & "'";))

Quand j'ai un texte sans apostrophe cela fonctionne bien. Mais quand B3 a une apostrophe j'ai une erreur #VALUE!

J'ai essayé de remplacer l'apostrophe avec SUBSTITUTE(B3;"'";"''") et SUBSTITUTE(B3;"'";Char(34)) et SUBSTITUTE(B3;"'";"/'") mais rien n'y fait...

Si tu n'as pas de " dans tes critères, alors remplace le ' par "" dans query

=(QUERY('Mafeuille'!$A$2:$AA$1000;"SELECT B,C,X,N WHERE C =""" & B3 & """ ";))

ce qui revient donc à le tripler ! et cela fonctionne même si le terme n'en contient aucune ...

Le problème c'est que je ne peux pas utiliser cela car je construits ma requête dynamiquement et du coup ma formule ne peut pas prendre """

IL me semblait qu'en faisant un replace de ' en '' ca suffisait pour résoudre le probleme mais a priori pas dans Gsheet

Le problème c'est que je ne peux pas utiliser cela car je construits ma requête dynamiquement et du coup ma formule ne peut pas prendre """

  1. pas de soucis, dans ce cas il faut a nouveau doubler les " même si c'est pour en mettre 5 à la file
  2. mais il y a une solution plus intelligente avec javascript applicable sur google app script : utiliser la notation littérale avec accent grave et ${} : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
  3. c'est plus élégant que les substitute qui ne s'appliquent pas toujours, ok en mysql mais semble deprecated, mais pas en app script (en tous cas je n'ai pas réussi)

Dans cette deuxième solution (notation littérale avec accent grave), tu n'as plus de contrainte de " et ' dans ton texte (donc ta formule) inclus dans le script.

Les backticks ` ` ou accents graves respectent les ' et " et inclus les retours à la ligne ! Il sont accessibles avec AltGr+7

Si tu n'as pas tout pigé (ce n'est pas simple de prime abord), mets ton bout de code.

Pour plus de clarté, voici un test que je viens de faire

function test(){
  SpreadsheetApp.getActiveRange().setFormula(`=query(A3:C5;"select * where C = """&A1&""" ")`)
}

note bien les accents graves ...

super. Merci beaucoup pour ton aide

Rechercher des sujets similaires à "probleme requete apostrophe"