Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Organisez les données par ordre croissant et décroissant via listbox1 et combobox1

Solution
Je remercie ceux qui gèrent ce site
J'ai trouvé la solution sur d'autres sites et j'ai souhaité ajouter ce code pour en bénéficier


Private Sub UserForm_Initialize()
cod......................
...........................................................

tbl = "Table2"
OnRng = Range(tbl).value
For i = 1 To UBound(OnRng): OnRng(i, 2) = CDate(OnRng(i, 2)): Next i
Irow = Range(tbl).Columns.Count
ColVisu = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
ListBox1.ColumnCount = 12

Me.ComboBox1.List = Application.Transpose(Range(tbl).Offset(-1).Resize(1)) ' Ordre tri
End Sub
Private Sub ComboBox1_click()
Dim tbl()
colTri = Me.ComboBox1.ListIndex
tbl = Me.ListBox1.List
TriMultiCol tbl, LBound(tbl), UBound(tbl), colTri...

Mody200

XLDnaute Occasionnel
Bonjour
S'il vous plaît aidez-moi
Après une recherche entre deux dates et nom du pilote, les données sont triées par ordre croissant ou décroissant à l'aide de combobox1, mais une seule colonne apparaît dans la liste. Après avoir sélectionné la commande, je souhaite qu'il termine le processus de commande et l'affiche. Données dans toutes les colonnes après avoir sélectionné la colonne organisée par combobox1.
Remarque : Lorsque vous sélectionnez la colonne d'ordre, cette opération n'affecte pas l'ordre du reste des colonnes.
Je souhaite traiter le tri via ListBox1 uniquement, et cela n'affecte pas le processus de tri dans Worksheet2


3
 

Oneida

XLDnaute Impliqué
Bonjour,
Vous etes aussi ici:
Mais passons.
Ce serait beaucoup plus simple avec une listview et vous n'auriez pas besoin d'un choix combobox pour faire le tri
 

Mody200

XLDnaute Occasionnel
Je remercie ceux qui gèrent ce site
J'ai trouvé la solution sur d'autres sites et j'ai souhaité ajouter ce code pour en bénéficier


Private Sub UserForm_Initialize()
cod......................
...........................................................

tbl = "Table2"
OnRng = Range(tbl).value
For i = 1 To UBound(OnRng): OnRng(i, 2) = CDate(OnRng(i, 2)): Next i
Irow = Range(tbl).Columns.Count
ColVisu = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
ListBox1.ColumnCount = 12

Me.ComboBox1.List = Application.Transpose(Range(tbl).Offset(-1).Resize(1)) ' Ordre tri
End Sub
Private Sub ComboBox1_click()
Dim tbl()
colTri = Me.ComboBox1.ListIndex
tbl = Me.ListBox1.List
TriMultiCol tbl, LBound(tbl), UBound(tbl), colTri
Me.ListBox1.List = tbl
End Sub
Sub Tri(a, gauc, droi)
ref = a((gauc + droi) \ 2)
g = gauc: d = droi

Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub
Sub TriMultiCol(a(), gauc, droi, colTri)
Dim colD, colF, ref, g, d, c, temp
colD = LBound(a, 2): colF = UBound(a, 2)
ref = a((gauc + droi) \ 2, colTri)
g = gauc: d = droi
Do
Do While a(g, colTri) < ref: g = g + 1: Loop
Do While ref < a(d, colTri): d = d - 1: Loop
If g <= d Then
For c = colD To colF
temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
Next
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then TriMultiCol a, g, droi, colTri
If gauc < d Then TriMultiCol a, gauc, d, colTri
End Sub
 

Pièces jointes

  • organiser-les-donnees-par-combobox1(1).xlsm
    131.5 KB · Affichages: 1

Discussions similaires

Réponses
55
Affichages
3 K
Réponses
9
Affichages
818
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…