Macro + liste déroulante

Bonjour le Forum,

Est-il possible de faire une macro avec une liste déroulante,

Je m'explique sur feuil2 j'ai des noms, prénoms, age.
Sur la feuil 1, j'ai un tableau.
Un userform serait nécessaire, pour que quand je clique sur un nom, le nom, le prénom et l'age apparaissent sur 3 cellules d'une ligne

Par avance, merci pour votre investissement et vos connaissances

Cordialement

eric2027

6 réponses

  1. Contributeur
    Bonjour

    Pourquoi une macro
    Une liste déroulante et 2 rechercherV devraient faire l'affaire
    1 cellule liste déroulante (choisir le nom)
    2 cellule =Recherchev(la cellule nom;a1:c20;2;faux) renvoie le prénom
    3 cellule =Recherchev(la cellule nom;a1:c20;3;faux) renvoie l'âge
    le champ A1:c20 contient les noms, prénoms, âges
    0
    1. Pourquoi une macro, parce que j'ai plusieurs centaines de personnes à gérer et pour moi cela été plus simple juste de taper la première lettre d'un nom et d'avoir le reste
      0
      1. J'ai trouvé un code qui correspond à ce que je cherche, mais le problème quand je veux aller à la cellule 5 il me prend la cellule 4 et 5
        J'ai beau chercher à comprendre, rien n'y fait
        Pourriez vous m'aider svp

        je vous envois le code

        Dim L As Long
        Dim derlign As Long, i As Integer, col

        Public Sub Noms_Click()
        L = Noms.ListIndex
        If Noms = "" Then
        Exit Sub
        End If
        Cells(4, 1) = Noms.Value
        Cells(4, 2) = Sheets("soi").Cells(L + 2, 2)
        Cells(4, 3) = Sheets("soi").Cells(L + 3, 3)
        Unload Me
        Cells(5, 1) = Noms.Value
        Cells(5, 2) = Sheets("soi").Cells(L + 2, 2)
        Cells(5, 3) = Sheets("soi").Cells(L + 3, 3)
        Unload Me

        End Sub

        Public Sub UserForm_Initialize()
        Sheets("soi").Select
        derlign = Range("A65536").End(xlUp).Row
        Set plage = Range("A2:B" & derlign)
        With Noms
        .Width = 20 + plage.Width
        col = ""
        .ColumnCount = plage.Columns.Count
        .RowSource = plage.Address
        For i = 1 To .ColumnCount
        col = col & plage.Columns(i).Width & ";"
        Next
        .ColumnWidths = col
        .ListIndex = -1
        End With
        Sheets("attestation").Select
        End Sub

        et le code feuil1
        Option Explicit
        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        If Target.Address = "$A$4" Then Saisie.Show
        If Target.Address = "$A$5" Then Saisie.Show
        End Sub
        0
        1. personne pour regarder si il y a une solution
          0
          1. Contributeur
            Bonjour

            Un exemple de recherche progressive (avec les >=36700 communes de France)
            http://www.cjoint.com/c/EFnihxquc4A

            Michel
            0
            1. Bonjour,

              Cela correspond partiellement, parce que ça reste sur une seule ligne, en ce qui me concerne, il faudrait sur plusieurs dizaines de lignes ou je pourrais noter les personnes sans à chercher avec un menu déroulant.
              Comme le code ci-dessus, je me galère à trouver la solution, je vais me concentrer sur le votre, et essayer de trouver la solution.
              Encore, merci pour votre code.
              Cordialement.
              eric2027
              0
              1. Contributeur
                Essaie, pour la 1° fois de la discussion de faire l'effort d'^tre clair et précis dans ta demande
                et de définir tes variables
                0