Dim f, BD, ColVisu(), Ncol
Private Sub UserForm_Initialize()
Set f = Sheets("Feuil000")
ColVisu = Array(1, 3, 5, 9) ' Colonnes à visualiser (adapter)
Ncol = UBound(ColVisu) + 1
Set d = CreateObject("Scripting.Dictionary")
BD = f.Range("A2:J" & f.[A65000].End(xlUp).Row) ' 1 colonne de plus pourles nos de ligne
For i = LBound(BD) To UBound(BD): BD(i, UBound(BD, 2)) = i + 1: Next i
'-- en têtes de colonne ListBox
x = Me.ListBox2.Left + 8
y = Me.ListBox2.Top - 12
For Each k In ColVisu
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(1, k)
Lab.Top = y
Lab.Left = x
x = x + f.Columns(k).Width * 1#
temp = temp & f.Columns(k).Width * 1# & ";"
Next
temp = Left(temp, Len(temp) - 1)
Me.ListBox2.ColumnCount = UBound(ColVisu) + 1 + 1
Me.ListBox2.ColumnWidths = temp
'---- Contenu ListBox initial
Dim Tbl(): n = 0
For i = 1 To UBound(BD)
If Len(Trim(BD(i, 9))) <> 0 And IsDate(BD(i, 9)) Then
If CDate(BD(i, 9)) < Date Then
n = n + 1
ReDim Preserve Tbl(1 To Ncol + 1, 1 To n)
c = 0
For Each k In ColVisu
c = c + 1: Tbl(c, n) = BD(i, k)
Next k
Tbl(Ncol + 1, n) = BD(i, UBound(BD, 2)) 'no ligne
End If
End If
Next i
Me.ListBox2.Column = Tbl
End Sub
Private Sub ListBox2_Click()
ligne = Me.ListBox2.Column(Ncol)
f.Rows(ligne).Select
End Sub
Ceuzin