Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

trier listbox multicolonne

302 views
Skip to first unread message

Excel...lent

unread,
May 3, 2010, 5:19:48 AM5/3/10
to
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

JB

unread,
May 3, 2010, 6:57:56 AM5/3/10
to
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" <vpc...@orange.fr> 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 ?

michdenis

unread,
May 3, 2010, 7:01:12 AM5/3/10
to
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" <vpc...@orange.fr> a �crit dans le message de news:
%2394E2Kq...@TK2MSFTNGP06.phx.gbl...

Excel...lent

unread,
May 5, 2010, 12:39:51 PM5/5/10
to
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" <vpc...@orange.fr> a �crit dans le message de
news:%2394E2Kq...@TK2MSFTNGP06.phx.gbl...

Excel...lent

unread,
May 3, 2010, 7:27:35 PM5/3/10
to
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" <vpc...@orange.fr> a �crit dans le message de
news:%2394E2Kq...@TK2MSFTNGP06.phx.gbl...

Excel...lent

unread,
May 7, 2010, 12:18:48 PM5/7/10
to
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" <vpc...@orange.fr> a �crit dans le message de
news:%2394E2Kq...@TK2MSFTNGP06.phx.gbl...

0 new messages