Listbox

Fermé
amram.a Messages postés 56 Date d'inscription dimanche 19 mars 2017 Statut Membre Dernière intervention 19 avril 2017 - 1 avril 2017 à 17:49
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 4 avril 2017 à 12:25
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

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
1 avril 2017 à 19:11
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

0
amram.a Messages postés 56 Date d'inscription dimanche 19 mars 2017 Statut Membre Dernière intervention 19 avril 2017
Modifié le 1 avril 2017 à 22:08
Merci Doyens en faite, je suis débutant donc vraiment!

une fois de plus encore merci
ça marche parfaitement
0
amram.a Messages postés 56 Date d'inscription dimanche 19 mars 2017 Statut Membre Dernière intervention 19 avril 2017
Modifié le 1 avril 2017 à 23:42
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
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
2 avril 2017 à 01:26
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
0
amram.a Messages postés 56 Date d'inscription dimanche 19 mars 2017 Statut Membre Dernière intervention 19 avril 2017
2 avril 2017 à 22:37
merci je vais voir
0
amram.a Messages postés 56 Date d'inscription dimanche 19 mars 2017 Statut Membre Dernière intervention 19 avril 2017
Modifié le 4 avril 2017 à 00:22
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
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > amram.a Messages postés 56 Date d'inscription dimanche 19 mars 2017 Statut Membre Dernière intervention 19 avril 2017
4 avril 2017 à 12:25
Bonjour 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
0