Au secour : trier dans une combobox avec VB

Le
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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #3193011
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"
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
Lustrucru
Le #3192951
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"
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





Publicité
Poster une réponse
Anonyme