Bien vu :)
Public Sub Listing_Staff()
Dim MaCollection As New Collection
NomTableau = "T_Staff"
TblBd = Sheets("Staff").ListObjects(NomTableau).DataBodyRange.Value
ColVisu = Array(4, 3)
LargeurCol = Array(50, 45)
Staff_List.ColumnCount = Sheets("Staff").Range(NomTableau).Columns.Count - 10
Staff_List.ColumnWidths = Join(LargeurCol, ";")
Dim tb_tri()
Dim clé1_tri As Variant, clé2_tri As Variant
Dim i1 As Integer, i2 As Integer, j As Integer, C As Integer
Dim Tbl()
' En cas d'erreur
On Error Resume Next
' Boucle
For i = 1 To UBound(TblBd)
MaCollection.Add TblBd(i, 3), TblBd(i, 3)
' Vérifier si erreur = doublon
If Err.Number = 0 Then
' Sinon on ajoute
N = N + 1: ReDim Preserve Tbl(1 To UBound(TblBd, 2), 1 To N)
C = 0
For Each k In ColVisu
C = C + 1: Tbl(C, N) = TblBd(i, k)
Next k
Else
Err.Clear
End If
Next i
If N > 0 Then Staff_List.Column = Tbl Else Staff_List.Clear
' Tri le contenu du ComboBox par ordre alphabétique
With Sheets("DashBoard").Staff_List
'Création d'un tableau dynamique trié par Nom/Prénom
ReDim tb_tri(.ListCount, .ColumnCount)
For i1 = 0 To .ListCount - 1
clé1_tri = .List(i1, 1) & .List(i1, 0)
j = 0
For i2 = 0 To .ListCount - 1
clé2_tri = .List(i2, 1) & .List(i2, 0)
If clé1_tri > clé2_tri Then j = j + 1
Next i2
For C = 0 To .ColumnCount - 1
tb_tri(j, C) = .List(i1, C)
Next C
Next i1
'Rechargement Listbox triée
.ListFillRange = Empty
.List = tb_tri
End With
End Sub