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

trier listbox multicolonne

5 réponses
Avatar
Excel...lent
Re bonjour,

Je trie le contenu une listbox (1 colonne ) dans un userform avec ce code :

With ListBox1
For i = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If UCase(.List(i)) < UCase(.List(j)) Then
temp = .List(j)
.List(j) = .List(i)
.List(i) = temp
End If
Next j
Next i
End With

Je cherche a adapter ce code pour qu'il tri une listbox avec 2 colonnes. Clé
du trie 1ère colonne.
Je galère un peu. Cela est-il seulement possible ?
D' avance merci pour votre aide.
Cordialement.
Excel...lent

5 réponses

Avatar
JB
Bonjour,

Métode de tri rapide.

http://boisgontierjacques.free.fr/pages_site/formulaireListes2colonnes.htm# ListBoxTrie

JB
http://boisgontierjacques.free.fr

On 3 mai, 11:19, "Excel...lent" wrote:
Re bonjour,

Je trie le contenu une listbox (1 colonne ) dans un userform avec ce code :

With ListBox1
    For i = 0 To .ListCount - 1
        For j = 0 To .ListCount - 1
            If UCase(.List(i)) < UCase(.List(j)) Then
                temp = .List(j)
                .List(j) = .List(i)
                .List(i) = temp
            End If
        Next j
    Next i
End With

Je cherche a adapter ce code pour qu'il tri une listbox avec 2 colonnes. Clé
du trie 1ère colonne.
Je galère un peu. Cela est-il seulement possible ?
D' avance merci pour votre aide.
Cordialement.
Excel...lent
Avatar
michdenis
Bonjour,

La procédure est activée par un clic sur un bouton de
commande "CommandButton2_Click"

Tu dois adapter le nom du combobox2.

Copie ceci : "Sub QuickSort2(SortArray, col, L, R)"
dans ton module formulaire.

La procédure trie les entrées de ton combobox sur la
première colonne de celle-ci.


'-----------------------------------------
Private Sub CommandButton2_Click()
With Me.ComboBox2
Var = .List
QuickSort2 Var, 1, LBound(Var, 1), UBound(Var, 1)
.RowSource = ""
.List = Var
End With
End Sub
'-----------------------------------------

'-----------------------------------------
Sub QuickSort2(SortArray, col, L, R)
'Originally Posted by Jim Rech 10/20/98 Excel.Programming
'Modified to sort on first column of a two dimensional array
'Modified to handle a a second dimension greater than 1 (or zero)
Dim i, j, X, Y, mm

i = L
j = R
X = SortArray((L + R) / 2, col)

While (i <= j)
While (SortArray(i, col) < X And i < R)
i = i + 1
Wend
While (X < SortArray(j, col) And j > L)
j = j - 1
Wend
If (i <= j) Then
For mm = LBound(SortArray, 2) To UBound(SortArray, 2)
Y = SortArray(i, mm)
SortArray(i, mm) = SortArray(j, mm)
SortArray(j, mm) = Y
Next mm
i = i + 1
j = j - 1
End If
Wend
If (L < j) Then Call QuickSort2(SortArray, col, L, j)
If (i < R) Then Call QuickSort2(SortArray, col, i, R)
End Sub
'-----------------------------------------




"Excel...lent" a écrit dans le message de news:
%
Re bonjour,

Je trie le contenu une listbox (1 colonne ) dans un userform avec ce code
:

With ListBox1
For i = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If UCase(.List(i)) < UCase(.List(j)) Then
temp = .List(j)
.List(j) = .List(i)
.List(i) = temp
End If
Next j
Next i
End With

Je cherche a adapter ce code pour qu'il tri une listbox avec 2 colonnes.
Clé du trie 1ère colonne.
Je galère un peu. Cela est-il seulement possible ?
D' avance merci pour votre aide.
Cordialement.
Excel...lent
Avatar
Excel...lent
Salut Jacques et Denis,

Merci à vous deux pour votre aide.

Jacques :

Merci pour tes ressources. j'ai choisi ton code "ListBox multi colonnes
trié" ici
:ttp://boisgontierjacques.free.fr/pages_site/formulaireListes2colonnes.htm

Denis :

Ta soluce fonctionne bien sauf qu'elle tri sur la 2ème colonne de ma listbox
alors
que je souhaiterai qu'elle tri sur la 1ère.

J'ai oublié de vous dire que ma list box est accompagné de 2 textbox et un
commandbutton qui me permettent d'alimenter la listbox. Je saisi dans les 2
txtbox les textes des col1 et col2 et je valide l'insertion dans la listbox
avec le commandbutton.
Le tout étant dans une Frame. Et je crois que c'est la qu'il y a un soucis.
Je m'explique.
Quand j'essaie vos codes dans des userform simple avec la même chose que
dans le mien mais pas a l'interieur d'une frame tout fonctionne très bien.
Mais lorsque j'intègre les codes de la même façon dans mon userform et bien
le trie ne s'opère plus. Le dernier item saisi reste en dernier dans la
listbox. Il semblerait que le fait qu'il y ait une frame le tri ne
s'effectue pas.
Bizzare non ?
Merci pour votre aide
Amicalement
Marc

"Excel...lent" a écrit dans le message de
news:%
Re bonjour,

Je trie le contenu une listbox (1 colonne ) dans un userform avec ce code
:

With ListBox1
For i = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If UCase(.List(i)) < UCase(.List(j)) Then
temp = .List(j)
.List(j) = .List(i)
.List(i) = temp
End If
Next j
Next i
End With

Je cherche a adapter ce code pour qu'il tri une listbox avec 2 colonnes.
Clé du trie 1ère colonne.
Je galère un peu. Cela est-il seulement possible ?
D' avance merci pour votre aide.
Cordialement.
Excel...lent
Avatar
Excel...lent
Salut Denis et Jacques,
Merci les gars c'est parfait l'un comme l'autre vous m'avez apporté la
solution.
j'ai l'embarras du choix et pour ne pas faire de jaloux je ne vous dirais
pas la solution que j'ai retenu....lol
Merci à vous deux.
Amicalement.
Marc

"Excel...lent" a écrit dans le message de
news:%
Re bonjour,

Je trie le contenu une listbox (1 colonne ) dans un userform avec ce code
:

With ListBox1
For i = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If UCase(.List(i)) < UCase(.List(j)) Then
temp = .List(j)
.List(j) = .List(i)
.List(i) = temp
End If
Next j
Next i
End With

Je cherche a adapter ce code pour qu'il tri une listbox avec 2 colonnes.
Clé du trie 1ère colonne.
Je galère un peu. Cela est-il seulement possible ?
D' avance merci pour votre aide.
Cordialement.
Excel...lent
Avatar
Excel...lent
Désolé pour mon dernier double post.
Ne tenez compte que du dernier ou je vous dis que tous fonctionne.
En fait je pensais ne pas avoir envoyé le post ou je parlais des frame.
Pour la petite histoire c'était de ma faute. Le tris ne fonctionnait pas car
je ne respectais pas la casse.
Depuis j'ai mis tout en majuscule et ca roule.
Encore merci
Cordialement.
Marc

"Excel...lent" a écrit dans le message de
news:%
Re bonjour,

Je trie le contenu une listbox (1 colonne ) dans un userform avec ce code
:

With ListBox1
For i = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If UCase(.List(i)) < UCase(.List(j)) Then
temp = .List(j)
.List(j) = .List(i)
.List(i) = temp
End If
Next j
Next i
End With

Je cherche a adapter ce code pour qu'il tri une listbox avec 2 colonnes.
Clé du trie 1ère colonne.
Je galère un peu. Cela est-il seulement possible ?
D' avance merci pour votre aide.
Cordialement.
Excel...lent