Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Au secour : trier dans une combobox avec VB

2 réponses
Avatar
Lustrucru
Bonjour à toutes et tous,
Voici mon pt'iot problème,
je récupere dans une combobox, à partir d' une liste de 12 colonnes, les
informations contenues dans 1 colonne (par exemple "B", mais cela peut être C
ou D ou M).
Je souhaite avoir dans mon controle une liste triée en odre croissant.
Je pensais à deux approches:
1 méthode : trier mes 12 colonnes avec comme premier critère "B", puis
"charger"
ma combobox
2 méthode : trier mes informations dans la combobox sans toucher à ma liste
de données

Dans les deux cas, je ne sais pas le faire.
Au secour!!!

Merci d'avance

2 réponses

Avatar
michdenis
Bonjour Lustrucru,

Adapte le nom de la feuille et de la colonne que tu veux voir afficher dans ton combobox1.
Pour les besoins de l'exemple, les données et le combobox sont situés dans la "Feuil3"

'--------------------------------------
Sub MaCombobox_List()

Dim Rg As Range, Tblo As Variant
With Worksheets("Feuil3")
Set Rg = .Range("A1:A" & .Range("a65536").End(xlUp).Row)
Tblo = Application.Transpose(Rg)
Quick_Sort Tblo, LBound(Tblo), UBound(Tblo)
.ComboBox1.List = Application.Transpose(Tblo)
End With
Set Rg = Nothing
End Sub

'--------------------------------------
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
List_Separator = SortArray((First + Last) / 2)
Do
Do While (SortArray(Low) < List_Separator)
Low = Low + 1
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
End Sub
'--------------------------------------


Salutations!




"Lustrucru" a écrit dans le message de news:

Bonjour à toutes et tous,
Voici mon pt'iot problème,
je récupere dans une combobox, à partir d' une liste de 12 colonnes, les
informations contenues dans 1 colonne (par exemple "B", mais cela peut être C
ou D ou M).
Je souhaite avoir dans mon controle une liste triée en odre croissant.
Je pensais à deux approches:
1 méthode : trier mes 12 colonnes avec comme premier critère "B", puis
"charger"
ma combobox
2 méthode : trier mes informations dans la combobox sans toucher à ma liste
de données

Dans les deux cas, je ne sais pas le faire.
Au secour!!!

Merci d'avance
Avatar
Lustrucru
Bonsoir Michdenis,
Merci pour ton aide : ça marche du tonnere de ...Zeus



Bonjour Lustrucru,

Adapte le nom de la feuille et de la colonne que tu veux voir afficher dans ton combobox1.
Pour les besoins de l'exemple, les données et le combobox sont situés dans la "Feuil3"

'--------------------------------------
Sub MaCombobox_List()

Dim Rg As Range, Tblo As Variant
With Worksheets("Feuil3")
Set Rg = .Range("A1:A" & .Range("a65536").End(xlUp).Row)
Tblo = Application.Transpose(Rg)
Quick_Sort Tblo, LBound(Tblo), UBound(Tblo)
.ComboBox1.List = Application.Transpose(Tblo)
End With
Set Rg = Nothing
End Sub

'--------------------------------------
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
List_Separator = SortArray((First + Last) / 2)
Do
Do While (SortArray(Low) < List_Separator)
Low = Low + 1
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
End Sub
'--------------------------------------


Salutations!




"Lustrucru" a écrit dans le message de news:

Bonjour à toutes et tous,
Voici mon pt'iot problème,
je récupere dans une combobox, à partir d' une liste de 12 colonnes, les
informations contenues dans 1 colonne (par exemple "B", mais cela peut être C
ou D ou M).
Je souhaite avoir dans mon controle une liste triée en odre croissant.
Je pensais à deux approches:
1 méthode : trier mes 12 colonnes avec comme premier critère "B", puis
"charger"
ma combobox
2 méthode : trier mes informations dans la combobox sans toucher à ma liste
de données

Dans les deux cas, je ne sais pas le faire.
Au secour!!!

Merci d'avance