1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 'Adapté à partir de
'https://excel.developpez.com/faq/index.php?page=OleObject#TriAlphaComboBox
Sub Tri_Box(Box As Object, Optional NumeroColonne As Integer = 0, Optional OrdreDeTri As XlSortOrder = xlAscending, Optional Compare As VbCompareMethod = vbTextCompare)
'Permet de trier tout composant ayant un membre List()
'NumeroColonne pour choisir la colonne utilisée pour le tri
'OrdreDeTri pour choisir croissant ou décroissant
'Compare pour tenir compte de la casse (vbBinaryCompare) ou non (vbTextCompare)
Dim i As Integer, j As Integer
Dim iCol As Integer
Dim tabTemp As Variant
'Tri le contenu du Box
With Box
For i = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
'On prend en compte l'ordre de tri et le type de comparaison
If StrComp(.List(j, NumeroColonne), .List(i, NumeroColonne), Compare) = IIf(OrdreDeTri = xlAscending, 1, -1) Then
tabTemp = .List
For iCol = 0 To UBound(tabTemp, 2)
'On remplace les valeurs null par du vide ""
.List(i, iCol) = IIf(IsNull(.List(j, iCol)), "", .List(j, iCol))
.List(j, iCol) = IIf(IsNull(tabTemp(i, iCol)), "", tabTemp(i, iCol))
Next
End If
Next j
Next i
End With
End Sub |
Partager