Listbox

Bonjour,

j'ais un tableau de 25 colonnes dont de A à Y
j'ai fais un userform sur le quel, j'ai mis comboBox1 et listBox1

maintenant, j'aimerais qu'en sectionnant une ville dans la comboBox1 , touts les membre enregistré de cette ville affiche dans la lisbox1

ville se trouve dans la colonne H


mais mon soucis est que la liste des villes
affiche mais, aucun membre enregistré de la ville sélectionné n'affiche dans la listbox1

voici si déssou le code saisis

Private Sub ComboBox1_Change()

Dim a As Integer
Dim cherche As String
cherche = ComboBox1.Value
Dim i As Integer
f = 0
Me.ListBox1.Clear
Set f = Sheets("IDENTIFICATION")
For Each C In Range(f.[A5], f.[A70].End(xlUp))
If C.Offset(0, 2) = Me.ComboBox1 Then
Me.ListBox1.AddItem
Me.ListBox1.List(i, 0) = C.Offset(0, 0)

i = i + 1
End If
Next C
End Sub

3 réponses

  1. Bonjour Amram.a, bonjour le forum,

    Très étrange ton f = 0. C'est incompatible avec Range(f.[A5], f.[A70].End(xlUp)). je pense que tu voulais plutôt initialiser i mais ce n'est pas nécessaire, donc cette ligne est à supprimer...

    Ensuite, tu recherches dans les cellules de la colonne A une valeur décalée de deux colonnes à droite (=> colonne C) et tu dis que la ville se trouve en colonne H. Il est donc normal que ça n'affiche rien. De A à H ça donne Offset(0, 7) et pas Offset(0, 2)... Le code devrait être :

    Private Sub ComboBox1_Change()
    Dim cherche As String
    Dim f As Worksheet
    Dim a As Integer
    Dim C As Range
    Dim i As Integer
    
    cherche = ComboBox1.Value
    Me.ListBox1.Clear
    Set f = Sheets("IDENTIFICATION")
    For Each C In Range(f.[A5], f.[A70].End(xlUp))
        If C.Offset(0, 7) = Me.ComboBox1 Then
            Me.ListBox1.AddItem
            Me.ListBox1.List(i, 0) = C.Value
            i = i + 1
        End If
    Next C
    End Sub

    1. Merci Doyens en faite, je suis débutant donc vraiment!

      une fois de plus encore merci
      ça marche parfaitement
  2. Mais j'ais un petit soucis

    tous les colonne n'affiches pas .
    voici si dessous la liste

    CODE , ODRE ALPHABETIQUE, NOM & PRÉNOMS, DATE, LIEU, N° CNI OU EXTRAIS, VILLE D'ORIGINE, RESID-ACT, SITUATION FAMILIALE, CONJOINT(E), DATE, LIEU, NBRE D'ENFTS, DATE, LIEU, LIEU DE CULTE, BAPTISE(E), DATE, LIEU, N° L DE MBRE, EGLISE, SOCIALE, TEL, CEL, ADRESSE ELECTRONIQUE

    mais j'ais remarqué qu'après la colonne J (SITUATION FAMILIALE) ça ne continus plus

    merci d'avance
    1. Re,

      En pièce jointe, un exemple avec code commenté d'une méthode très rapide. La propriété [RowSource] de la Combobox1 et de la ListBox1 est vierge. Cette propriété est incompatible avec cette méthode...

      https://www.cjoint.com/c/GDbxx02WMYR
      1. merci je vais voir
      2. voilà ce que j'ai puis faire mais ça ne passe pas

        cherche = ComboBox1.Value
        Me.ListBox1.Clear
        Set f = Sheets("IDENTIFICATION")
        For Each C In Range(f.[A5], f.[A70].End(xlUp))
        If C.Offset(0, 7) = Me.ComboBox1 Then
        Me.ListBox1.AddItem
        Me.ListBox1.List(i, 0) = C.Value
        Me.ListBox1.List(i, 1) = C.Offset(0, 1)
        Me.ListBox1.List(i, 2) = C.Offset(0, 2)
        Me.ListBox1.List(i, 3) = C.Offset(0, 3)
        Me.ListBox1.List(i, 4) = C.Offset(0, 4)
        Me.ListBox1.List(i, 5) = C.Offset(0, 5)
        Me.ListBox1.List(i, 6) = C.Offset(0, 6)
        Me.ListBox1.List(i, 7) = C.Offset(0, 7)
        Me.ListBox1.List(i, 8) = C.Offset(0, 8)
        Me.ListBox1.List(i, 9) = C.Offset(0, 9)
        Me.ListBox1.List(i, 7) = C.Offset(0, 7)
        Me.ListBox1.List(i, 8) = C.Offset(0, 8)
        Me.ListBox1.List(i, 9) = C.Offset(0, 9)
        Me.ListBox1.List(i, 9) = C.Offset(0, 10)
        Me.ListBox1.List(i, 9) = C.Offset(0, 11)
        Me.ListBox1.List(i, 9) = C.Offset(0, 12)
        Me.ListBox1.List(i, 9) = C.Offset(0, 13)
        Me.ListBox1.List(i, 9) = C.Offset(0, 14)
        Me.ListBox1.List(i, 9) = C.Offset(0, 15)
        Me.ListBox1.List(i, 9) = C.Offset(0, 16)
        Me.ListBox1.List(i, 9) = C.Offset(0, 17)
        Me.ListBox1.List(i, 9) = C.Offset(0, 18)
        Me.ListBox1.List(i, 9) = C.Offset(0, 19)
        Me.ListBox1.List(i, 9) = C.Offset(0, 20)
        Me.ListBox1.List(i, 9) = C.Offset(0, 21)
        Me.ListBox1.List(i, 9) = C.Offset(0, 22)
        Me.ListBox1.List(i, 9) = C.Offset(0, 23)
        Me.ListBox1.List(i, 9) = C.Offset(0, 24)
        Me.ListBox1.List(i, 9) = C.Offset(0, 25)

        i = i + 1
        End If
        Next C
        End Sub

        https://www.cjoint.com/c/GDdwvFKOH2h
      3. @amram.aBonjour Amram.a, bonjour le forum,

        Tu n'as absolument pas utilisé la méthode que je t'ai proposée !?...

        Ton fichier modifié à télécharger. J'ai supprimé la propriété [ColumnHeads] non compatible avec cette méthode mais le code affiche la ligne des étiquettes. J'ai aussi supprimé la propriété [ColumnCount] qui est définie à l'initialisation de l'UserForm.
        Il n'y a qu'une seule procédure d'initialisation pour une UserForm. Initialise_2 n'existe pas et ne fonctionnera pas !... Je l'ai supprimée aussi. Code commenté...

        Tu remarqueras que la première colonne de la ListBox1 est cachée. Elle contient le numéro de ligne. Cela permet de retrouver dans la tableau la ligne d'un élément sélectionne de la ListBox1. Tu ne t'en sers visiblement pas mais c'est juste pour que tu comprennes. Imaginons que tu aies la procédure DblClick de la LisTbox1, la variable Ligne te permet de d'accéder à la ligne de l'élément double-cliqué (plus 4 car la première ligne du tableau commence à la ligne 5...) :

        Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Dim Ligne As Long
        
        With Me.ListBox1
            Ligne = CInt(.Column(0, .ListIndex)) + 4
        End With
        End Sub
        


        Le fichier :
        https://www.cjoint.com/c/GDekl5DxDcc