Recherchev sur une partie d'une chaîne de caractères

Negarev

XLDnaute Nouveau
Bonjour à tous,

J'aimerais faire quelque chose d'assez simple mais sur une grosse base de données : j'ai des adresses et j'aimerais trouver le quartier qui correspond si celui ci est présent dans la cellule adresse.

Du coup j'ai essayé un recherchev tout bête en incluant "*"&cellule cherchée&"*" pour bien spécifier que je ne recherche que dans une partie de la cellule mais cela ne marche pas.

J'ai donc essayé une formule index matricielle que m'avait conseillé Dugenou pour un autre problème, formule qu'il m'avait de plus expliqué donc que je n'aurais pas eu de mal à adapter mais cela ne marche pas non plus... Cette formule est présente dans le fichier joint

Est-ce que quelqu'un saurait comment procéder ?

Merci d'avance.

Negarev
 

Pièces jointes

  • exemple forum.xlsx
    9.9 KB · Affichages: 82
  • exemple forum.xlsx
    9.9 KB · Affichages: 78
  • exemple forum.xlsx
    9.9 KB · Affichages: 83

Tirou

XLDnaute Occasionnel
Re : Recherchev sur une partie d'une chaîne de caractères

Bonjour,

Pour quelqu'un d'externe à ton problème, j'ai une interrogation de taille : où se trouve le lien entre une rue et le quartier ???
En effet, comment savons nous (et donc comment le logiciel peut-il savoir) si "CITE MONTRAVEL" est dans le quartier "ORPHELINAT" ou "RIVIERE SALEE"
 

Negarev

XLDnaute Nouveau
Re : Recherchev sur une partie d'une chaîne de caractères

Bonjour Tirou,

C'est tout simple : CITE MONTRAVEL fait partie du quartier "MONTRAVEL" - si le quartier apparaît dans l'adresse (ce qui n'est pas toujours le cas, mais pour ça on verra plus tard), il faut pouvoir l'afficher
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Recherchev sur une partie d'une chaîne de caractères

Bonjour,

=INDEX(quartier;EQUIV(1;NB.SI(A1;"*"&quartier&"*");0))
Valider avec maj+ctrl+entrée

JB
 

Pièces jointes

  • Copie de exemple forum.xlsx
    10 KB · Affichages: 122
Dernière édition:

Dugenou

XLDnaute Barbatruc
Re : Recherchev sur une partie d'une chaîne de caractères

Bonjour,
Tu fais la recherche dans le mauvais sens : tu ne peux pas trouver *village normandie* dans ta base ou il n'y a que "normandie". il faut faire une recherche de la valeur de quartier dans tes 3 noms avec
CHERCHE(quartier;Feuil1!A1)
et pour avoir une valeur VRAI ou FAUX on fait
ESTNUM(CHERCHE(quartier;Feuil1!A1))
ensuite le SI
SI(ESTNUM(CHERCHE(quartier;Feuil1!A1));LIGNE(quartier);LIGNES(quartier)+2)
et on sélectionnera la plus petite valeur avec MIN (attention on affichera un seul résultat)
la dernière partie LIGNES(quartier)+2) permettra d'obtenir une erreur d'index quand il n'y aura pas de valeur et on traite l'erreur avec SIERREUR

Voir en pj cette formule matricielle avec une variante qui permet d'utiliser la zone nommée quartier dans l'index aussi. Je viens d'assimiler cette dernière technique alors je m'entraîne !

EDIT : olala Boisgontier quelle classe !!!!
 

Pièces jointes

  • negarev quartiers.xlsx
    10.3 KB · Affichages: 109
Dernière édition:

Negarev

XLDnaute Nouveau
Re : Recherchev sur une partie d'une chaîne de caractères

\o/ Merci à vous deux !

Boisgontier, ta formule marche dans la base de données exemple mais pas dans la base de données que j'essaie de traiter (la colonne adresse est en D et même en modifiant cette référence je n'arrive pas à la faire marcher...)

Dugenou, ta formule est beaucoup plus compliquée, mais elle marche dans ma base de données ! Merci encore !

Par contre, j'ai du mal à comprendre comment ta formule arrive à trouver la ligne correspondante juste avec le ligne(quartier)...
 

Dugenou

XLDnaute Barbatruc
Re : Recherchev sur une partie d'une chaîne de caractères

Essaye quand même avec la formule de Boisgontier, ce serai dommage de pas en profiter !
as-tu validé en matriciel ?
sinon mets en pj un fichier avec deux lignes seulement
Pour ma formule à rallonge, il faut imaginer qu'elle crée un tableau pour chaque ligne ou le calcul est fait ligne par ligne donc quand le Si est vrai tu as le N° de ligne de la zone quartier pour lequel le si est vérifié et quand il ne l'est pas tu as le nb de ligne de la zone avec LIGNES() puis +2
 

Discussions similaires