Probleme avec macro recherche excel

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
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. Bonjour
      merci pour ta réponse mais je n'arrive pas à l'appliquer.Je continues néanmoins à essayer...
      merci encore
      Lindette
      1. 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
        1. 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
          1. 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
            1. 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