Recherche de valeur nom prenom ou prenom

Bojour à tous,

Quelqu"un connaîtrait il une methode de recherche qui ne tiens pas compte de l'ordre de caractère svp ?

Exemple:

J'ai cette valeur que je recherche dans une plage de cellules "DUPRI Claude".

mais le problème, dans la plage l'ordre des noms et prenoms sont souvent inversé. Donc je veux que ma recherche capte aussi bien "Claude DUPRI" que "DUPRI Claude".

j'ai essayé la methode Instr mais çà ne marche pas

Merci,

Bonjour

à tester

dans la cellule A1 de ta feuil1==> DUPRI Claude

en version Française

=STXT(A1&" "&A1;TROUVE(" ";A1)+1;NBCAR(A1))

en version Anglaise

 =MID(A1&" "&A1,FIND(" ",A1)+1,LEN(A1))

crdlt,

André

Bonjour le forum,

=SIERREUR(SI(OU(B1=A2;B1=STXT(A2;CHERCHE(" ";A2)+1;100)&" "&GAUCHE(A2;CHERCHE(" ";A2)-1));1);0)
noms prenoms

Merci André et mbbp,

j'ai oublié de préciser tout à l'heure que je travaillais en VBA.

peut-on convertir vos deux formule en code vba?

Je me disait que ça pouvais marcheravec la methode find mais je ne maitrise pas bien l'usage de ses différents aeguments.

Merci,

Bonjour Doofy.

Bonjour le fil.

Une proposition en VBA :

Sub test()
Dim recherche$, nom$, prenom$
Dim temp
recherche = "Claude DUPRI"
temp = Split(recherche, " ")
For i = LBound(temp) To UBound(temp)
    If [a1].Value Like "*" & temp(i) & "*" Then n = n + 1
Next i
If n = UBound(temp) + 1 Then MsgBox "trouvé"
End Sub

En gros, tu découpes la recherche à chaque espace.

Tu boucles chaque mot de la recherche pour vérifier s'il est présent dans la valeur de la cellule.

Si oui il affiche une MsgBox.

A toi d'adapter selon le besoin.

Attention aux majuscules et accents.

Pour les majuscules tu peux modifier comme ça :

If lcase([a1].Value) Like "*" & lcase(temp(i)) & "*" Then n = n + 1

Pour les accents tu trouveras une fonction sur le site de BoisGontier.

Merci pour la reponse thebenoit59.

si j'ai bien compris ton code, cela veut dire que si l'un des composants du nom est trouvé (prenom ou nom), cela considère que le nom est trouvé et me renvoie le message.

si c'est le cas ce n'ai pas vraiment ce que je cherche, il faut que les prenom et nom soit identique.

Essaye plutôt ça alors :

Sub test()
Dim recherche$, nom$, prenom$
Dim temp
recherche = "Claude DUPRI"
temp = Split(recherche, " ")
For i = LBound(temp) To UBound(temp)
    If InStr([a1].Value, temp(i)) > 0 Then n = n + 1
Next i
If n = UBound(temp) + 1 Then MsgBox "trouvé"
End Sub

Formidable Thebenoit59 !

C'est exactement ce que je voulais.

Ton code marche parfaitement si on ajoute une ligne avant le next pour réinitialiser la valeur de n avant la prochaine boucle.

Sub test()
Dim recherche$, nom$, prenom$
Dim temp
k = Feuil2.Range("J" & Rows.Count).End(xlUp).Row
For v = 4 To k
recherche = "AMMEUX Amandine"
temp = Split(recherche, " ")
For i = LBound(temp) To UBound(temp)
    If InStr(Range("L" & v).Value, temp(i)) > 0 Then n = n + 1
Next i
If n = UBound(temp) + 1 Then MsgBox "trouvé"
n = 0
Next
End Sub

Merci à toi et merci au forum.

Oui si tu l'utilises dans une boucle il faut le remettre à zéro.

Rechercher des sujets similaires à "recherche valeur nom prenom"