Probleme avec macro recherche excel

lindette Messages postés 38 Statut Membre -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
J'ai créer une macro déclenche par crtl + h qui ouvre une boite de dialogue dans laquelle on rentre le nom à rechercher dans la colonne A (nom et prénom client)

mais j'ai un probleme si je fais une recherche sur le nom SIMON et bien il me place sur AMEDEE SIMON alors que Simon est les prénom et j'ai un autre client qui lui a pour nom SIMON (je n'ai pas de prénom) . Et moi j'aimerais vraiment qu'il fasse la rechercher par le nom et si nécessaire aprés par le prénom. Quelqu'un aurait il une petite idée?
voici ma macro

Sub recherche()
Dim rngTrouve As Range
Dim strChaine As String

strChaine = InputBox("Nom à rechercher :")
Set rngTrouve = ActiveSheet.Columns(1).Cells.Find(what:=strChaine)

If rngTrouve Is Nothing Then
MsgBox "Pas trouvé"
Else
Cells.Find(what:=strChaine).Activate
End If

Set rngTrouve = Nothing
End Sub

Merci d'avance
Linda
A voir également:

6 réponses

Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

C'est normal que ta recherche se place sur le premier élément trouvé. Tu fais une recherche sur une chaine de caractère contenu dans une cellule. Ce que tu demandes est un plus complexe et le fait d'avoir le nom et le prénom dans la même colonne complique encore plus la recherche. Il faudrait une fonction qui te retourne la première chaîne de caractère d'une cellule(avant le premier espace) et que tu compare ensuite au nom entré par l'utilisateur, mais les noms composés passeront au travers.

Voilà un exemple de fonction qui retourne la première chaîne de caractère, celle juste avant un espace:

Public Function returnPremChaine(Byval str As String) As String
Dim i As Integer
Dim lg As Integer

     lg = Len(str)
     For i = 1 To lg
          If Mid(str,i,1) = " " Then
               returnPremChaine = Mid(str,1, i - 1)
          End If
     Next i
End Function


Bon courage

;o)

Polux
0
lindette
 
Bonjour
merci pour ta réponse mais je n'arrive pas à l'appliquer.Je continues néanmoins à essayer...
merci encore
Lindette
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
bonsoir,

Voilà un exemple pour utiliser la fonction:

Public Sub searchName()
Dim strChaine As String 
Dim i As Integer

i = 1

strChaine = InputBox("Nom à rechercher :")

With Worksheets("Feuil1")
     While .Range("A" & i).Value <> " "
           If  strChaine = returnPremChaine(.Range("A" & i).Value) Then
                .Range("A" & i).Activate
           End If
           i = i + 1
     Wend

End Sub


Bon courage

;o)

Polux
0
lindette Messages postés 38 Statut Membre
 
Bonjour Polux

J ai eu quelques problemes de connexion internet mais c'est maintenant résolu. Je vais donc travaillé sur les codes que tu as eu la gentillesse de m'envoyer.
Je te tiens au courant
merci
Lindette
0

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

Posez votre question
lindette Messages postés 38 Statut Membre
 
Rebonsoir
bon j'ai essayer de mettre en application le code mais message d'erreur "dépassement de capacité" et c'est par rapport à i = i + 1
et je séche complétement. As-tu une idée?
Merci
Linda
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
bonjour,

Ca vient peut être de là :
While .Range("A" & i).Value <> " "

met ça : While .Range("A" & i).Value <> ""

remplace : Dim i As Integer par Dim i As Long

Tiens moi au courant stp

Polux
0