Option Compare Text
Private Sub UserForm_Initialize()
Set f = Sheets("bd")
bd = f.Range("A2:D" & f.[A65000].End(xlUp).Row).Value
ville = "Paris"
n = 0
Dim TblDest()
For i = 1 To UBound(bd)
If bd(i, 3) = ville Then
n = n + 1: ReDim Preserve TblDest(1 To UBound(bd, 2), 1 To n)
For k = 1 To UBound(bd, 2): TblDest(k, n) = bd(i, k): Next k
End If
Next i
Me.ListBox1.ColumnCount = 4
Me.ListBox1.ColumnWidths = "50;50;50;50"
Me.ListBox1.Column = TblDest
'---Tri par date
a = Me.ListBox1.List
Tri a, LBound(a), UBound(a), 3
Me.ListBox1.List = a
End Sub
Sub Tri(a, gauc, droi, colTri) ' Quick sort
colD = LBound(a, 2): colF = UBound(a, 2)
ref = a((gauc + droi) \ 2, colTri)
g = gauc: d = droi
Do
Do While a(g, colTri) < ref: g = g + 1: Loop
Do While ref < a(d, colTri): d = d - 1: Loop
If g <= d Then
For c = colD To colF
temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
Next
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi, colTri)
If gauc < d Then Call Tri(a, gauc, d, colTri)
End Sub