[RECHERCHE] ne renvoie pas la bonne valeur

Bonjour à tous,

J'ai voulu bidouiller un peu pour faire un outil de chiffrage de texte en fonction d'une base de données, en utilisant cette formule :

=SIERREUR(RECHERCHE(B3;'BASE DE DONNEES'!B2:AA2;'BASE DE DONNEES'!B3:AA3))

Le chiffrage fonctionne parfaitement, mais pour une raison qui m'est obscure à moi, le déchiffrage rencontre quelques soucis ...

image

Voici donc le lien du fichier en copie pour que vous puissiez regarder de plus près !

https://docs.google.com/spreadsheets/d/1jqdIIt1Be0fT-SAWejLtk07PyzZkOz8gPj9eaPBNs6A/edit?usp=sharing

Tant qu'à faire que j'en sois à poser une question, pensez-vous possible le fait de réaliser ça, sans avoir à écrire une lettre par case ?

D'avoir littéralement un endroit où je rédige mon message sans utiliser X cases, et que le déchiffrage / chiffrage se fasse ? Ceci est une question subsidiaire, pas de soucis si c'est trop long / compliqué à mettre en œuvre on laisse tomber :)

Merci par avance, Jordan

Bonjour,

voici une formule qui fonctionne ...

=iferror(index('BASE DE DONNEES'!2:2; MATCH(B7;'BASE DE DONNEES'!3:3;0)))

à voir en français ligne 10

Je regarde pour ta question subsidiaire.

Bonjour,

Encore merci pour la réactivité et la réponse qui fonctionne !

Aurais-tu la raison pour laquelle ma fonction ne fonctionne pas en bas, mais en haut elle fonctionne ?

Merci d'avance :)

Aurais-tu la raison pour laquelle ma fonction ne fonctionne pas en bas, mais en haut elle fonctionne ?

tu ne peux utiliser RECHERCHE que dans des suites triées ...

https://support.google.com/docs/answer/3256570?hl=fr

Recherche une clé dans une ligne ou une colonne triée et renvoie la valeur de la cellule dans une plage de résultats située à la même position que la ligne ou la colonne de recherche.

D'accord je comprends mieux ! Et bien merci pour l'éclaircissement :)

si en B1 tu as la suite de caractères originaux et en B2 la suite de caractères transformés

alors, pour encoder B4

=textjoin("";true;arrayformula(MID(B2;MATCH(SPLIT(REGEXREPLACE(REGEXREPLACE(B4&"";"(?s)(.{1})";"$1"&CHAR(127));"'";"''");CHAR(127));SPLIT(REGEXREPLACE(REGEXREPLACE(B1&"";"(?s)(.{1})";"$1"&CHAR(127));"'";"''");CHAR(127));0);1)))

et pour décoder B7

=textjoin("";TRUE;arrayformula(MID(B1;MATCH(SPLIT(REGEXREPLACE(REGEXREPLACE(B7&"";"(?s)(.{1})";"$1"&CHAR(127));"'";"''");CHAR(127));SPLIT(REGEXREPLACE(REGEXREPLACE(B2&"";"(?s)(.{1})";"$1"&CHAR(127));"'";"''");CHAR(127));0);1)))

voir onglet "PAR MOT"

L'explication de la formule est ici https://joshuatz.com/posts/2021/google-sheets-split-string-into-characters/

En fait, on décompose la suite de caractères de façon à se retrouver dans la situation initiale d'un caractère par cellule. Mais split nécessite un séparateur, et donc on ajoute entre chaque caractère un séparateur (ici le caractère ascii de code 127, on aurait pu mettre autre chose comme un ♥).

Cela permet de revenir à la situation initiale. Il suffit ensuite de faire arrayformula pour traiter tous les caractères et in fine de faire un join entre eux.

Plus joli comme ceci :

=textjoin("";true;arrayformula(MID(B2;MATCH(SPLIT(REGEXREPLACE(REGEXREPLACE(B4&"";"(?s)(.{1})";"$1♥");"'";"''");"♥");SPLIT(REGEXREPLACE(REGEXREPLACE(B1&"";"(?s)(.{1})";"$1♥");"'";"''");"♥");0);1)))

et

=textjoin("";true;arrayformula(MID(B1;MATCH(SPLIT(REGEXREPLACE(REGEXREPLACE(B7&"";"(?s)(.{1})";"$1♥");"'";"''");"♥");SPLIT(REGEXREPLACE(REGEXREPLACE(B2&"";"(?s)(.{1})";"$1♥");"'";"''");"♥");0);1)))

C'est top ! Encore merci pour ton aide, je vais de ce pas aller mettre ça en place sur mon fichier source :)

Attention que certains signes de ponctuation ne pourront pas être interprétés, comme \ ^ $ . [ ] | ( ) ? * + { } car ils ont une fonction particulières dans la recherche. Ce sont ce qu'on appelle des métacaractères.

Ensuite, c'est assez "facile" de déchiffrer lorsque le texte est long, car avec les fréquences d'apparition des E A etc... on peut dégrossir et ensuite rechercher des vraisemblances. La seule chose qui rendra difficile est que l'espace ne soit pas à la même place dans les 2 chaînes.

Rechercher des sujets similaires à "recherche renvoie pas bonne valeur"