ComboBox : Tri sur 4 caractères par item
Bonjour,
Je vous sollicite pour une question très pointue dans le milieu des tris sur ComboBox. Après avoir effectué plusieurs recherches sur votre forum, je n'ai pas réussi à trouver la même problématique.
Contexte :
Je travaille avec un tableau et une colonne contenant des numéros qui s'incrémente au fur et à mesure des ajouts. Ce numéro incrémenté se compose d'une partie variable à gauche (ne souhaitant pas être incrémentée) et à droite (fixe) et d'une partie variable au milieu. Les valeurs de cette colonne se comportent de la façon suivante : XXX / 0001XX
ex : S46 / 0001FA, S66 /0002FA, S36 /0003FA, S46 /0004FA, S56 / 0005FA
Question :
- Je cherche à afficher dans une ComboBox => Jusque là, c'est OK,
- Trier la liste dans la ComboBox (sans toucher l'ordre des données d'origine dans la sheet) dans le sens décroissant c'est à dire en commençant (en tête de ComboBox) par S56 /0005FA, puis S46 /0004FA ....
Je souhaiterais trouver une solution de tri de ces caractères SANS passer par une colonne parallèle (qui stockerait les 4 caractères à incrémenter).
Pour des raisons de confidentialité, je ne peux pas joindre ma macro à ma demande.
Merci d'avance pour votre aide.
Juu86
Bonjour,
Suggestion à adapter :
Function Tri(T)
Dim i%, j%, dt
For i = LBound(T) To UBound(T)
T(i) = Split(T(i), "/")
Next i
For i = LBound(T) To UBound(T) - 1
For j = i + 1 To UBound(T)
If Val(T(j)(1)) > Val(T(i)(1)) Then
dt = T(i)
T(i) = T(j)
T(j) = dt
End If
Next j
Next i
For i = LBound(T) To UBound(T)
T(i) = Join(T(i), "/")
Next i
Tri = T
End Function
Sub ListCombo()
Dim temp
ActiveSheet.ComboBox1.Clear
temp = Application.Transpose(Range("A1:A5"))
temp = Tri(temp)
ActiveSheet.ComboBox1.List = temp
End SubLe combo est sur une feuille parce que je n'ai pas pris le temps de créer un userform pour tester...
Cordialement.
C'est tiptop, ça marche du tonnerre dans l'userform.
Merci beaucoup MFerrand.
Demande clôturée.
Bon après-midi.