XL 2016 Rechercher la valeur la plus proche ( Texte )

lord_2009

XLDnaute Nouveau
Bonjour,

Je recherche une formule qui me permettrait de trouver la valeur la plus proche d'une cellule par rapport à une BDD.

Exemple :
En cellule A1 : ROBERT SMITH
Dans ma BDD en colonne B :
- ROBERT DE SMITH en B1
- ROBERT DE MONACO en B2

Ma formule doit m'afficher pour résultat de la recherche pour la cellule A1 : ROBERT DE SMITH.

J'ai déjà trouvé des formules permettant de trouver une valeur approximative en texte mais celle ci n'est pas à 100% efficace : =RECHERCHEV("*" & A1 & "*";B1:B2;1;0). Cela ne marche pas car il y a un changement au milieu du texte et non sur les extrémités.

Merci d'avance pour votre aide.
 

lord_2009

XLDnaute Nouveau
Salut merci pour ta réponse,

Mais cela ne fonction uniquement pour l'exemple.
Enfin si jamais j'inverse (bdd et recherche) ou si je rajoute une valeur avant ou après dans la cellule qu'on cherche, la formule ne marche plus.
exemple " al robert monaco" ou 'robert monaco al' ou encore 'al robert monaco al'
de même si ma cellule est "robert de monaco" et que je souhaite trouver "robert monaco" la formule ne fonctionne pas.

Désolé je n'avais pas précisé.
Je souhaiterais une formule qui trouve la valeur la plus proche possible peu importe ce qu'il y a autour ( avant après ou au milieu)
 

sousou

XLDnaute Barbatruc
bonsoir
Effectivement beaucoup de cas de figure
une tentative avec la fonction prochede( cellule de référence; données à comparer) voir exemple dans le fichier
J'essaie de coter la la comparaison de phrase et choisie la plus chère....
1 note pour nombre de mot identique
1 note pour chaque mot identique
1 note pour nombre de lettre identique dans chaque mot
A tester longuement......
 

Pièces jointes

  • phrase.xlsm
    18.1 KB · Affichages: 98

Brice G

XLDnaute Occasionnel
Edit :
Au passage, je trouve l'idée de sousou intéressante, sur la note des différentes entrées !:)
Et pour moi ça fonctionne plutôt bien même.

Bonsoir, ma foi j'ai bien une solution, étant donné que je me suis cassé la tête (oooh que oui:eek::rolleyes::rolleyes:o_O:oops:) sur un tel problème de "recherche intelligente" pendant tout un petit moment. Je te propose un menu déroulant qui ferait appel à ta base de données, ce menu déroulant serait muni d'une "recherche intelligente", par exemple tu tapes "robert", dans ton menu déroulant ne s'affiche plus que les différentes entrées qui contiennent "robert".

Si tu peux me donner la base de données je peux essayer de t'adapter un des codes de l'excellent:eek::p:) boisgontier : http://boisgontierjacques.free.fr/pages_site/listes_cascade.htm
En gros,
avec ce code VBA :
Saisie intuitive type Google
Frapper les premières lettres du nom

Code:
Private Sub ComboBox1_GotFocus()
  ComboBox1.List = Sheets("BD").Range("liste").Value
End Sub

Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" Then
   Set d1 = CreateObject("Scripting.Dictionary")
   clé = UCase(Me.ComboBox1) & "*"
   For Each c In Sheets("BD").[Liste].Value
     If UCase(c) Like clé Then d1(c) = ""
   Next c
   Me.ComboBox1.List = d1.keys
   Me.ComboBox1.DropDown
   [F3] = Me.ComboBox1
End If
End Sub

Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox1.List = Sheets("BD").Range("liste").Value
Me.ComboBox1.DropDown
End Sub

Pour avoir pas seulement les mots qui contiennent les premières lettres mais toutes les entrées qui contiennent ces lettres, tu remplaces clé = UCase(Me.ComboBox1) & "*"
par clé = "*" & UCase(Me.ComboBox1) & "*".
Tu dois changer les appels à la "BD" et à la "liste", je peux te le faire si besoin.:)


J'ai fait sur ton fichier exemple ce à quoi je pensais, il s'agit du menu déroulant. On peut faire plus joli (utiliser un userform : une petite fenêtre s'ouvrirait tatai tatata) évidemment, mais sur le principe, cela te convient-il ?
 

Pièces jointes

  • phrase_brice.xlsm
    26.4 KB · Affichages: 85
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
On est là pour se faire Aider mais aussi Aider donc ... je partage
J'ai aussi passé plusieurs mois pour arriver à finaliser un Annuaire à entrée intuitive (pour les intéressés rechercher sur mes post de cet été vous aurez l'appli ) j'ai voulu qu'il soit Tip Top cela a été le cas ; la sub courte mais très "Siouxe" ( ruse indienne) est là :
Code:
Private Sub UserForm_Initialize()
  a = [nom].Value
End Sub
' nom est votre liste de recherche donc une plage

Private Sub textBox1_Change()
  Set d1 = CreateObject("Scripting.Dictionary")
  If Me.TextBox1 = "" Then
     tmp = ""
  Else
      tmp = Me.TextBox1 & "*"
  End If

  For Each c In a
   If c Like tmp Then d1(c) = ""
  Next c
  Me.ListBox1.List = d1.keys
End Sub
Par contre je ne sais pas l'expliquer !!! mais si cela peut contribuer aux recherches de certains ......dans leurs appli. !!
 

sousou

XLDnaute Barbatruc
Bonjour Lord
Autant suivre le topic pour que chacun puisse regarder
Une nouvelle version de la fonction à tester ou j'ai changé les prix
si mot identique=10 si mot bien placé+10
+nombre de caractères commun si mot non identique
Pas traité la casse (donc respect de la casse) a voir!
Pour ta problèmatique test les macro xla
 

Pièces jointes

  • phrase.xlsm
    19.3 KB · Affichages: 111

oussema wis

XLDnaute Nouveau
Bonjour,

voila mon problème j'ai deux feuilles qui contient des listes des clients chaque feuille est saisie par une personne donc les noms des clients ne sont pas les mêmes dans les deux feuilles je veux rapprocher les noms par la fonction valeur proche pour recherche le pin de la deuxième feuille dans la première .ci joint une fichier excel

Merci beaucoup .
 

Pièces jointes

  • valeur proche.xlsx
    8.2 KB · Affichages: 10

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Je viens de vous faire une proposition dans votre autre fil de discussion. Veillez à ne pas vous disperser. Si vous avez trouvé votre bonheur ici, ou une simple piste, mentionnez le dans votre dernier fil de discussion. Sinon on ne va plus savoir ou on en est.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 894
Membres
103 021
dernier inscrit
Sergyl75