Calc : rechercheV non exact

Bonjour!

Je cherche depuis quelques temps à faire quelque chose, mais je ne trouve pas… soit ça n’existe pas, soit je m’y prends mal

J’ai un tableau de données dans un onglet de calc avec des ingrédients, des rapports volume/poids,…
Dans un autre onglet j’ai fais un petit outil de conversion qui transforme, par exemple, “1 cac eau” en “5g eau”. Quand le mot “eau” est exactement pareil il trouve facile, mais si je cherche à transformer “1 cac Ail Frais” il ne trouvera pas parce que dans le tableau c’est “Ail Frais, Purée”…
Autre exemple, si je cherche “coriandre, poudre”, il ne trouvera pas parce que c’est “Coriandre Graine Sec, Poudre”
(Pour anticiper la question, oui, je suis obligé de laisser ces noms plus compliqués dans mon tableau de données)

Comment je peux faire pour faire une rechercheV en lui disant de trouver le plus approchant?

D’avance merci ^^

EDIT : j’ai trouvé xlookup entre temps, mais j’ai des surprises assez étranges… cf image

emmental il trouve rien, “emmental,” il me trouve encre de seiche et l’expression dans le tableau c’est “Emmental, Râpé”
sel, il trouve rien, sel, poudre non plus alors que c’est l’expression juste
“poulet cuisse” il trouve les aiguillettes, avec la virgule il trouve les cuisses et avec les mots dans le désordre…le cumin !

ingrédients est en F
formule : =XLOOKUP(J10;Cuisine.$F$9:$F$1048576;Cuisine.$F$9:$F$1048576;“FAUX”;1;2)

2024-09-10_16h36_50

Veuillez télécharger un fichier (sans données confidentielles) avec lequel on peut tester et pas une image. Merci

Le voici.
D’ailleurs, autant sur le fichier d’origine que sur la copie jointe, plus rien ne fonctionne… sans raisons!
Test convertion.ods (102.7 KB)

Personne n’a d’idées?

Bonjour Mr-Boutindou, le forum

Vous utilisez la fonction : “com.microsoft.xlookup”

Elle n’existe actuellement pas dans LibreOffice et ne peut donc logiquement pas fonctionner…
:wink:

depuis la dernière version elle existe, cependant ça ne fonctionne pas correctement

Voici une version qui fonctionne déjà un peu mieux !

J’ai modifié la formule XLOOKUP en ajoutant des * autour du contenu de la cellule J10 (et suivante dans la colonne), puis j’ai changé le type de recherche en 2 qui permet d’utiliser ces * comme caractères spéciaux signifiant “possibilité de caractères avant” et “possibilité de caractères après”. De plus, cette façon de procéder permet d’éliminer la non-correspondance entre un mot avec majuscule et un mot avec minuscule.

Par exemple, pour “sel”, la nouvelle formule trouve d’abord “Gros sel” par ordre alphabétique. Et s’il y avait un produit qui s’appelait “Bettesselrave”, c’est ce produit qui serait retourné en premier. C’est donc une limitation de l’approche !

Concernant “poulet cuisse” et “cuisse de poulet”, XLOOKUP ne trouve pas la correspondance exacte et donc retourne FAUX.

Test convertion.ods (103.8 KB)

Entre temps j’ai eu une idée pour aider quand il y a plusieurs réponses possibles, j’ai créé une liste déroulante dynamique avec la formule : FILTRE(CuisineNomcompose;ESTNUM(CHERCHE(J10;CuisineNomcompose)))

sachant que CuisineNomcompose c’est l’ensemble des données “nom composé” dans l’onglet cuisine.
C’est bien parce que ça me donne tous les choix disponible, cependant si je mets “cuisse de poulet” il ne trouvera forcement rien…

Est ce qu’il y aurait un moyen de lui dire de chercher chaque mots du critère séparément et de trouver toutes les combinaisons possible de ces mots? Si on lui dit cuisse de poulet, il pourrait chercher “cuisse poulet”, “de poulet”, “cuisse de”, “cuisse de poulet”, “poulet cuisse de” etc… et l’inclure dans la liste?

qq idées par là (en anglais) : Searching for multiple words in a cell or row

J’ai pensé à un truc mais je ne sais pas en quelle mesure c’est faisable…
En gros je prends la ligne où je mets le texte brut “1 u cuise de poulet”, il extrait la quantité, l’unité et le nom (jusque là ça va)
Ligne en dessous, un textsplit (je ne sais pas si ça existe dans calc) pour qu’il sépare tous les mots
Ligne en dessous, génère toutes les possibilités de combinaisons de mots (cuisse de, cuisse poulet, cuisse de poulet, cuisse poulet de, de poulet, de cuisse, de cuisse poulet, de poulet cuisse, poulet cuisse, poulet de, poulet de cuisse, poulet cuisse de)

Dans ma ligne déroulante, au lieu de lui demander de chercher le nom extrait, je lui demande de faire une recherche de toutes les combinaisons possible et de me retourner tous les résultats trouvés

C’est faisable? Comment?

sic IA :

sauf que la fonction SPLIT n’existe pas

Fonction Split

et plus généralement : Conseils pour poser une question - #3 by ajlittoz

Ok, mais je cherchais une formule, pas du vba parce que je ne le maitrise pas du tout. D’où la confusion

Personne ne peut m’aider? :frowning:

Test convertion_nouvo i_123037.ods (108.6 KB)

@koyotak
Je ne comprends pas bien le fichier :frowning:

@koyotak
Serait-ce possible d’avoir une explication?