VBA - Filtre ListBox

yusukens

XLDnaute Occasionnel
Bonjour
d'après plusieur topic du forum j'ai réussi a filtrer un ListBox selon un ComboBox.

par contre ça saute 2 lignes si je le fait en 3 colonnes.

voila mon code :

Code:
Private Sub ComboBox1_Change()
Dim CHOIX
Dim NBref
CHOIX = ComboBox1.Value
NBref = Range("K1")
'Effacer la liste LISTE
LISTE.RowSource = ""
'Remplir le tableau LISTE après filtrage
For i = 3 To NBref
    If Range("C" & i).Value = CHOIX Then
        Me.LISTE.AddItem (Range("  B" & i))
        Me.LISTE.List(LISTE.ListCount - 1, 1) = Range("B" & i)
        Me.LISTE.AddItem (Range("  C" & i))
        Me.LISTE.List(LISTE.ListCount - 2, 2) = Range("C" & i)
        Me.LISTE.AddItem (Range("  D" & i))
        Me.LISTE.List(LISTE.ListCount - 3, 3) = Range("D" & i)
    End If
Next i
End Sub


Pouvez vous m'aidez s'il vous plait
 

skoobi

XLDnaute Barbatruc
Re : VBA - Filtre ListBox

Re,

en rouge à supprimer, en bleu à modifier:

For i = 3 To NBref
If Range("C" & i).Value = CHOIX Then
Me.LISTE.AddItem (Range(" B" & i))
Me.LISTE.List(LISTE.ListCount - 1, 1) = Range("B" & i)
Me.LISTE.AddItem (Range(" C" & i))
Me.LISTE.List(LISTE.ListCount - 1, 2) = Range("C" & i)
Me.LISTE.AddItem (Range(" D" & i))
Me.LISTE.List(LISTE.ListCount - 1, 3) = Range("D" & i)
End If
Next i
 

yusukens

XLDnaute Occasionnel
Re : VBA - Filtre ListBox

Salut encore moi
Pourai tu m'expliquer deux petit truc sur le code ? j'ai beau chercher je ne comprend pas.

pourquoi mettons nous cette ligne ?
Code:
Me.LISTE.AddItem (Range(" B" & i))
Si je l'enleve ça ne marche plus et si je change la lettre "B" par un autre ça marche encore.

Peut tu m'expliquer cette ligne ?
Me.LISTE.List(LISTE.ListCount - 1, 1) = Range("B" & i)

Un dernier truc, je vois que après le filtre nous avons plus d'entete,
Je ne vois pas ou on doit mettre le ColumnHeads
 

skoobi

XLDnaute Barbatruc
Re : VBA - Filtre ListBox

AddItem cré la nouvelle valeur de la liste dans la première colonne, ça revient à faire:
Me.LISTE.List(LISTE.ListCount - 1, 0) = Range("A" & i).
La propriété List se définit comme ceci:
List(ligne,colonne) sachant que la première ligne ainsi que la première colonne vaut 0.
Dans ce cas précis, LISTE.ListCount - 1 = 0.
Un dernier truc, je vois que après le filtre nous avons plus d'entete,
Je ne vois pas ou on doit mettre le ColumnHeads
Comme la listbox n'est plus alimenté par la propriété RowSource, l'entete ne peut être récupéré (enfin d'après moi).
 

Discussions similaires

Statistiques des forums

Discussions
312 444
Messages
2 088 482
Membres
103 867
dernier inscrit
nykostinson