trier listbox multicolonne

Le
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.
Excellent
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #21675741
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"
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
michdenis
Le #21675831
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" %
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
Excel...lent
Le #21687451
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" 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
Excel...lent
Le #21687441
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" 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
Excel...lent
Le #21811951
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" 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
Publicité
Poster une réponse
Anonyme