Je recherche soit une formule, soit une maccro qui puisse me permettre de mettre en place ceci:
Dans une colonne B j'ai une liste de mot sur le secteur du voyage croisés avec des pays:
Mon but serais de dire à Excel, si tu trouve dans la colonne B un des mots de la base 1 ou 2 ou 3 alors tu m'inscris le nom de pays en gras (F4 / G4 / H4). Dans le cas ou 2 mots seraient présents ex:
"voyage à paris au départ d'espagne " --> je souhaite avoir l'info suivante : France Espagne (le mot "paris" est dans la base France et le mot "espagne" est dans la base espagne).
Je connais les fonctions cherche et si mais le problème c'est que mes bases vont contenir beaucoup de termes.. et j'imagine que la formule sera très longue.. non?
En fait ta formule fonctionne, mais pas avec la base de mot qu'il y a dans le fichier (base 1 2 et 3).
Ce que je souhaite c'est que excel puisse me remonter un nom de pays ex France s'il trouve dans une cellule les mots de ma base comme "france" / "french" / "paris" / "lyon" ...
la partie CHERCHE(france;B4) indication "france" dans cette formule correspond a la plage de cellule $G$6:$G$11
fonctionnement de cherche(valeur cherchée;ou chercher la valeur) si la valeur a chercher est trouvées cette formule renvoie le numéro du caractère ou commence la valeur cherchée donc une valeur numérique sinon le renvoi est #VALEUR!
exemple si je cherche "Paris" dans une cellule ou il y a "je vais à paris" le résultat sera 11 car le P de paris est le onzième caractère de la phrase
donc ici on cherche chaque cellule de la plage nommée "france" dans la cellule de la colonne B
ensuite on inclu cette fonction cherche dans estnum() qui permet de dire vrai ou faux si la valeur est numérique ce qui donne
ESTNUM(CHERCHE(france;B4))
il suffit de dire à excel affecte 1 a chaque fois que la la recherche d'un des termes de la plage france est trouvée en colonne B
ce qui donne
(ESTNUM(CHERCHE(france;B4)))*1
et pour que chaque cellule de la plage france soit bien bien analysée on met cela dans une formule matricielle sommeprod() et on obtient
SOMMEPROD((ESTNUM(CHERCHE(france;B4)))*1) qui va additionner le nombre de 1
de la si cette formule est supérieur a 0 on met france plus un espace sinon on ne met rien
La solution que tu me proposes répond bien à ma demande à savoir obtenir le mot trouvé dans une base.
Pourtant en faisant l'exercice sur d'autres mots cela ne fonctionne pas.
Ex: dans ma base j'ai le mot "paris" et "à paris"
La réponse de la formule est automatiquement "paris" et non "à paris" qui est pourtant dans ma base et que je souhaite remonter.
Comment régler cela? un tri dans ma base?
Cisco, dans l'idéal je souhaiterais avoir une seule colonne, par exemple une base pays avec France, italie, ecosse etc..
mais ce cas : "voyage en france au départ d'écosse" est-il possible d'avoir comme résultat "france écosse" ?
L'ancienne formule proposée par Jocelyn ci-dessus correspond à ce que je souhaite faire me ne me remonte pas le mot trouvé..
Ma proposition ne renvoie qu'un mot par base, comme signalé dans mon précédent post. Par conséquent, effectivement, comme "à paris" est constitué de 2 mots, il y a un problème. Idem si tu mets tout les mots les uns en dessous des autres.
Avec ces nouvelles conditions, il nous faut revoir complètement nos propositions. Pas évident avec des formules...
et si avant d'appliquer la formule, je remplace les espaces par un _ et que dans ma base je fais la même chose donc "à_paris ", il sera toujours inévitable de faire apparaître paris plutôt que à_paris ?
Car la réponse "paris" est vraie certes, mais "à_paris" beaucoup plus vraie! Du coup il n'y a pas de possibilité de pousser la solution la plus vraie?
Pour le moment, la longueur du mot renvoyé est calculée à l'aide du premier espace rencontré après le début "du" mot à renvoyer. Si on remplace tous les espaces par des _ , ma formule ne repérera pas la fin "du" mot à renvoyer et le problème ne sera pas résolu. Il faut trouver autre chose...