Recherche avec correspondance nom/prenom

Bonjour à tous,

Je ne savais pas comment chercher cela dans les topics existants.

Voila mon problème,

J'ai une liste de personne avec dans la colonne J le Nom des personnes et dans la colonne I leurs prenoms.

Je cherche à faire une remonté d'informations dans un userform.

Je n'ai aucun problème à remonter les infos si aucune entrée n'est en double.

Je commence par chercher les noms puis les prenoms mais quand y a un doublons c'est la marde. Il me remonte le premier seulement.

Au final je veux juste reduire mon champs de recherche au fur et a mesure mais je galere vraiment a mettre en place une boucle.

Voila a quoi ressemble pour le moment mon code.

En gros faut que je reduise mon champs de recherche jusqu'a ce qu'il trouve la bonne correspondance nom/prenom, ou rien s'il n'y a pas de correspondance.

Set Scherche = Worksheets("Liste")

If Fiche_salarié.Nom_fam.Value = "" Then

MsgBox ("Veuillez entrer le Nom de famille du salarié")

Else

Nomsal = Fiche_salarié.Nom_fam.Value

Set cherchenom = Scherche.Range("j:j").Find(what:=Nomsal, lookat:=xlWhole)

If cherchenom Is Nothing Then

MsgBox ("Salarié inconnu")

Else

prenomsal = Fiche_salarié.Prenom_sal.Value

Set chercheprenom = Scherche.Range("i:i").Find(what:=prenomsal, lookat:=xlWhole)

If chercheprenom = "" Then

MsgBox ("Prénom du salarié obligatoire")

Else

Fiche_salarié.ListeRH.Value = Scherche.Range("B" & chercheprenom.Row).Value

Fiche_salarié.ComboBox2.Value = Scherche.Range("C" & chercheprenom.Row).Value

Fiche_salarié.ComboBox1.Value = Scherche.Range("D" & chercheprenom.Row).Value

D'avance merci pour l'aide

Bonjour,

J'ai une piste à te proposer (il peut y en avoir bien plus...). En gros, le nom de famille est demandé puis la recherche s'effectue, si il y a plusieurs salariés portant le même nom, la recherche boucle et récupère les différents prénoms et le numéro de ligne où il se trouvent, ensuite, un message demande de préciser le numéro d'index du prénom voulu dans la liste proposée avec ceci, le numéro de ligne correpondant est récupéré dans le tableau et les valeurs sont ensuite rapatriées. Dans mon code, le prénom est situé en colonne K, adapte... :

Sub Recherche()

    Dim Scherche As Worksheet
    Dim ChercheNom As Range
    Dim Adr As String
    Dim TblNoms()
    Dim I As Integer
    Dim J As Integer
    Dim Index
    Dim NomSal As String
    Dim Chaine As String

    Set Scherche = Worksheets("Liste")

    If Fiche_salarié.Nom_fam.Value = "" Then

        MsgBox ("Veuillez entrer le Nom de famille du salarié !")
        Exit Sub

    End If

    NomSal = Fiche_salarié.Nom_fam.Text

    Set ChercheNom = Scherche.Range("J:J").Find(NomSal, , xlValues, xlWhole)

    If Not ChercheNom Is Nothing Then

        'mémorise pour la fin de la recherche
        Adr = ChercheNom.Address

        Do

            'stocke dans le tableau le prénom et le numéro de ligne
            I = I + 1
            ReDim Preserve TblNoms(1 To 2, 1 To I)
            TblNoms(1, I) = ChercheNom.Offset(, 1).Value 'le prénom est sensé se trouver dans la colonne K (adapter l'offset)
            TblNoms(2, I) = ChercheNom.Row

            'continu la recherche
            Set ChercheNom = Scherche.Range("J:J").FindNext(ChercheNom)

        Loop While Adr <> ChercheNom.Address

        'si plus d'un prénom...
        If UBound(TblNoms, 2) > 1 Then

            'boucle pour concaténer les prénoms avec retour à la ligne en leur donnant un n° d'index
            For I = 1 To UBound(TblNoms, 2): Chaine = Chaine & "n° " & I & " - " & TblNoms(1, I) & vbCrLf: Next I

            'demande l'index à prendre en compte...
            Index = InputBox("Le nom '" & NomSal & "' correspond à plusieurs salariés :" _
                             & vbCrLf _
                             & Chaine _
                             & vbCrLf _
                             & "Indiquez l'index du prénom recherché !")

            'si réponse non conforme, fin !
            If Index = "" Then Exit Sub
            If Not IsNumeric(Index) Then Exit Sub

            'récupère le numéro de la ligne conrrespondante
            J = TblNoms(2, CInt(Index))

        Else

            'si un seul prénom
            J = TblNoms(2, 1)

        End If

    Else

        MsgBox "Le nom du salarié '" & NomSal & "' ne se trouve pas dans la base de données !"
        Exit Sub

    End If

    Fiche_salarié.ListeRH.Value = Scherche.Range("B" & J).Value
    Fiche_salarié.ComboBox2.Value = Scherche.Range("C" & J).Value
    Fiche_salarié.ComboBox1.Value = Scherche.Range("D" & J).Value

End Sub
Rechercher des sujets similaires à "recherche correspondance nom prenom"