Trie sur 2 colonnes sur LiestView

Résolu
Archeron Messages postés 4 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 25 juin 2007 - 25 juin 2007 à 13:21
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 25 juin 2007 à 14:50
Bonjour à tous !!

Je réalise un programme en VB 6 pour la gestion d'un tournoi de foot. J'ai une list view à 3 Colonnes (Equipe, points, différence)

J'aimerais pour réaliser mon classement faire un tri sur la colonne points puis sur la colonne différence...
Le soucis est que je n'ai aucune idée comment faire...

Pouvez vous m'aider ?!

Merci !!

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 14:46
Donc maintenant que tu as ta première colonne de trier... ben t'as plus qu'à tout refaire ! lol

Le listview ne permet que de trier 1 seule colonne, et non deux à la fois !

Le principe, c'est de trier d'abord selon une colonne, puis une fois la première colonne triée, trier la deuxième colonne selon les données de la première colonne.

Un exemple :
'toto', 2; 3
'titi', 1, 5
'tata', 1, 4

Trie sur deuxième colonne donne :
'titi', 1, 5
'tata', 1, 4
'toto', 2, 3

Ca n'importe quel algorithme de tri te permet à ce résultat (recherche "tri rapide" ou "tri shell") dans les sources du site par exemple.

Une fois ce premier tri effectué, tu dois trier la troisième colonne lorsque la deuxième colonne contient 2 lignes de même valeur, ici : 'titi' et 'tata'. Là c'est à toi de faire ton propre algo de tri, bien que tu peux très bien te baser sur l'algorithme de tri de la deuxième colonne, ca y ressemblera fortement !
Au final tu obtiens :
'tata', 1, 4  ' permutation des deux lignes car 'tata' et 'titi' ont 1 dans la deuxième colonne, mais la troisième colonne de 'titi' est plus grande
'titi', 1, 5
'toto', 2, 3
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 13:53
Il faut que tu fasse ton tri avant d'ajouter tes items dans la listview : tri d'abord par points puis affine ce tri par la colonne différence en ne triant que les lignes qui ont le même nombre de points.
0
Archeron Messages postés 4 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 25 juin 2007
25 juin 2007 à 14:28
Merci pour ta réponse, mais je comprends pas trop le fonctionnement

Dans mon Onload pour la list viex je fais :

    With listpouleA
                  .MultiSelect = False
                  .HideSelection = False
                  .FullRowSelect = True
                  .GridLines = False
                  .View = lvwReport
                 
                  .ColumnHeaders.Add
                  .ColumnHeaders.Add
                  .ColumnHeaders.Add
                  .ColumnHeaders(1).Text = "Equipes"
                  .ColumnHeaders(1).Width = "2900"
                  .ColumnHeaders(2).Text = "Points"
                  .ColumnHeaders(2).Width = "970"
                  .ColumnHeaders(3).Text = "Diff"
                  .ColumnHeaders(3).Width = "970"
                  .Arrange = lvwAutoLeft
                  .Sorted = True
                  .SortKey =1            
                 .SortOrder = lvwDescending
    End With

Ca devrait se classer? Car si oui ca ne le fait pas

Merci !!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 14:31
je n'ai pas vb sous la main, mais oui ca devrait trier cà. A moins que le listview possède une méthode sort()...

Essaye sinon d'intervertir tes propriétés :
.SortKey =1            
.SortOrder = lvwDescending
.Sorted = True
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Archeron Messages postés 4 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 25 juin 2007
25 juin 2007 à 14:38
Voilà ca trie Première Colonne maintenant il faut que je trie ma deuxieme colonne...

Tu ne pourrais pas me donner un petit tuyaux pour le faire ?

Merci !!
0
Archeron Messages postés 4 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 25 juin 2007
25 juin 2007 à 14:48
Ok je pensais qu'il y avait une propriété qui permettait le trie sur deux colonnes... Je vais donc faire mon propre algorithme pour faire les deux tries en une fois...

Encore Merci !!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 14:50
Et non pas avec le listview !

A la limite, tu peux utiliser le SGrid de vbaccelerator.com qui lui gère le multi-tri il me semble, mais tu risque devoir changer un peu ton code, je le crains.
0
Rejoignez-nous