cs_Gekco
Messages postés20Date d'inscriptionmercredi 24 mars 2010StatutMembreDernière intervention17 mai 2010
-
30 mars 2010 à 17:43
r1r2
Messages postés22Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention31 mars 2010
-
31 mars 2010 à 15:50
Bonjour,
J'utilise un code (ci-dessous) afin d'alimenter une ListBox combinée avec un filtre amélioré. J'obtiens ce que je veux sauf que ma listbox contient enormement de lignes blanches (vides ou masquées ??). Je souhaiterai afficher uniquement mes lignes non masquées sans ses lignes "blanches". Quelqu'un pourrait-il m'aider ?
Je passe par un tableau Array afin de pouvoir utiliser plusieurs colonnes dans ma listbox.
Dim aCC(0 To 2000, 0 To 12)
For i = 4 To Range("A65536").End(xlUp).Row
If Not Rows(i + 1).Hidden Then
For t = 0 To 12
aCC(i, t) = Cells(i + 1, t + 1)
Next t
End If
Next i
r1r2
Messages postés22Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention31 mars 2010 31 mars 2010 à 15:50
Bonjour,
Il faut que ton tableau aCC soit dimensionné en fonction du nombre de lignes visibles pour éviter d'avoir des trous correspondant aux lignes masquées.
Voici un exemple de ton code modifié :
Private Sub CommandButton1_Click()
Range("A4:K2000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("A1:K2"), Unique:=True
UserForm2.ListBox1.Clear
Dim aCC(), nbLigne As Long, iLigne As Long
'Calcul du nombre de lignes visibles
nbLigne = Application.WorksheetFunction.Subtotal(3, Range("A5:A65535"))
If nbLigne > 0 Then
'Si au moins un ligne visible, on dimensionne le tableau et on l'alimente
ReDim aCC(1 To nbLigne, 1 To 13)
For i = 5 To Range("A65536").End(xlUp).Row
If Not Rows(i).Hidden Then
iLigne = iLigne + 1
For t = 1 To 13
aCC(iLigne, t) = Cells(i, t).Value
Next t
End If
Next i
Else
'Si aucune ligne n'est visible, le tableau est juste initialisé et laissé vide
ReDim aCC(0 To 0, 1 To 13)
End If
UserForm2.ListBox1.Clear
UserForm2.ListBox1.ColumnCount = 13
UserForm2.ListBox1.ColumnWidths = "20;20;20;20;25;150;150;150;50;50;50;50;50"
UserForm2.ListBox1.List() = aCC
UserForm2.Show
UserForm1.ComboBox1.Clear
Range("A4:K2000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("A1:K2"), Unique:=True
End Sub