Excel Recherchev en mieux

Résolu
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   -  
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'utilise la fonction recherchev car j'ai une liste de commune (176 exactement) et une deuxième liste de commune qui n'est pas écrite tout à fait pareil :

Ex : 1ere liste : SAINT ETIENNE ----> 2eme liste : ST ETIENNE etc..

Il n'y a pas beaucoup de différence mais la fonction recherchev (x;x;x;VRAI-> approximatif) ne trouve pas la bonne correspondance (même jamais) j'ai l'impression qu'il commence au début de la liste et que le premier qui ressemble un peu près il s'arrête.

Si vous pouvez m'aider,

Cordialement,

A voir également:

9 réponses

Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

La fonction RECHERCHEV n'affiche que la première valeur trouvée, dans le cas de réponse multiple plusieurs possibilités avec la syntaxe Index par exemple mais le mieux serait d'avoir ton fichier ou un exemple de fichier pour écrire une formule adaptée. tu peux joindre ton fichier avec ce lien

https://www.cjoint.com/
0
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   154
 
https://www.cjoint.com/?3CDkkyYqZgl

Voila l'exemple, merci
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

on a bien ton classeur mais tu n'as qu'une liste alors qu'il était question de plusieurs listes.
et si pour ma part j'ai bien compris, plusieurs noms identiques pouvaient exister.
dans le fichier que tu as joint que veux tu faire ?
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   154
 
Alors en faite : J'ai une liste de commune (a droite dans le fichier) et j'ai des noms de commun (à gauche) qui sont tapé à la main par des personnes différentes. Le problème c'est qu'aucune personnes ne l'écrit pareil et je voudrais faire en sorte de faire un lien automatique entre ses 2 écriture.

ex:

personne 1 : Saint genis
personne 2 : ST GENIS
personne 3 : ST-GENIS
personne 4 : SAINT-genis

Liste de commune : SAINT GENIS

RechercheV(X;X;X;VRAI) ne fonctionne pas.

Merci d'avance !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour
1° message pas passé!
peut être quelque chose à exploiter
vous pouvez trouver comment est écrit le 1° nom dans la liste avec une recherche partielle de texte
soit pas exemple pour trouver la façon don est écrite le ^premier St Genis dans une colonne A:
=RECHERCHEV("*genis*";A:A;1;0)
le texte entre guillemets + astérisques n'est pas sensible à la casse et vous renvoie le premier texte de la liste qui contient Genis quelque soit la façon dont il est écrit, ainsi que le texte qui le complète.

crdlmnt

Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   154
 
Super ça marche nikel, mais
je fait comment vu que j'ai 177 commune etplein de facon différente de l'écrire^^...
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Ben difficile de vous répondre vu qu'on ne sait pas ce qu'il faut obtenir en final!
??
0
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   154
 
Dans ce fichier https://www.cjoint.com/?3CDkkyYqZgl

La colonne I est la liste des communes standard.

J'ai écrit deux exemple : cellule "valeur brut" que n'importe qui peut écrire n'importe comment (ou presque) et je cherche à faire une recherche dans cette liste (en I) pour que dans la cellule "valeur cherché" j'ai la bonne écriture (celle de la colonne I)

^^ dsl si c'est incompréhensible
0
Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
Bonjour,

Ne serait-il pas envisageable qu'au lieu de faire saisir par l'utilisateur le nom d'une commune (qui sera orthographiée différemment d'un utilisateur à l'autre), de lui afficher une liste déroulante des 177 communes possibles ?
0
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   154
 
Si maintenant ça marche comme ça.

Mais j'ai des centaines d'ancienne affaire qui ont été rentré à la main.

Et je ne peu pas les modifier à la main les anciennes.

Voilà pourquoi je me prend la tête.
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
alors il faudra passer par une macro, (ce n'est pas dans mes compétences) à moins que la solution ci joint puisse vous suffire, c'est une cote mal taillée qui permet de rechercher une liste de noms à partir d'un nombre de lettres variable en fin du nom cherché,, et au final de trouver celui qui correspond à ce que vous cherchez.
Mais avant de l'appliquer, il faut débarrasser votre liste en I des tirets qui empêchent de traiter un texte assez long, soit donc:
sélectionner colonne I
crtl+h
remplacer
en haut le tiret
en bas le blanc
https://www.cjoint.com/?BCDrqcGZX5T
crdlmnt
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Bonsoir mon ami Vaucluse et merci d'avoir pris le relai, je me suis absenté.
Une proposition avec liste déroulante qui s'adapte en fonction de la première lettre saisie en majuscule ou minuscule

https://www.cjoint.com/?BCDxlP5avrC
0
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   154
 
Re bonjour,

Merci pour votre aide, du cou j'ai écrit un code qui compare les noms des communes:




Public Function compare(aa As String, bb As String)

ma = Application.WorksheetFunction.Max(Len(aa), Len(bb))

b = 0

For a = 1 To ma

If Right(Left(LCase(aa), a), 1) = Right(Left(LCase(bb), a), 1) Then b = b + 1

If Left(Right(LCase(aa), a), 1) = Left(Right(LCase(bb), a), 1) Then b = b + 1

Next

compare = b

End Function




J'ai fait des tests, à chaque fois la valeur max de b tombe sur la commune recherché !

merci bien en tout cas @ +
0