Tri décroissant d'une listbox

Résolu
dsigmoun Messages postés 135 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 25 février 2023 - 31 oct. 2008 à 16:53
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 2 déc. 2008 à 18:47
Bonjour,

Comment faire que qu'une listbox soit triée de façon décroissante. Par défaut, sorted=true fait un tri croissant.

Merci pour votre aide,

9 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
31 oct. 2008 à 18:01
Bonjour,


A moins que VB.Net (que je ne connais oas) n'ait prévu un tri décroissant,

Laisse ta propriété Sorted à True puis fais en sorte que "les derniers soient les premiers"

Tu  devrais pouvoir écrire sous vb.net l'équivalent de ceci (écrit en VB6) :

ou = 0
 For i = 1 To List1.ListCount
   toto = List1.List(List1.ListCount - 1)
   List1.AddItem toto, ou
   ou = ou + 1
   List1.RemoveItem List1.ListCount - 1
 Next
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 nov. 2008 à 11:46
Le Pivert
Bonjour


Sur VB.Net  il y a un tri décroissant: Sorted: False


Pour remettre le tri croissant: Me.ListBox1.Sorted =
True
@+


 
0
dsigmoun Messages postés 135 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 25 février 2023 2
3 nov. 2008 à 09:21
La valeur False de Sorted ne fait pas de tri du tout.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
3 nov. 2008 à 11:00
Le Pivert
Bonjour
Tu mets la propriété  de ta ListBox à False
Et dans le code d'ouverture:
Private

Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load

Me.ListBox.Sorted =
True
End SubNormalement ta liste est décroissante

 
0

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

Posez votre question
dsigmoun Messages postés 135 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 25 février 2023 2
3 nov. 2008 à 11:38
Ma listbox a bien comme propriété false.

Je mets bien Me.ListBox3.Sorted =
True
,mais le tri est toujours croissant
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
3 nov. 2008 à 11:44
Le Pivert
Je ne comprends pas
Essaie avec 2 boutons
Btn1: Me.ListBox3.Sorted =
True
Btn2: Me.ListBox3.Sorted =
False
Tu vois ce que cela donne
0
dsigmoun Messages postés 135 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 25 février 2023 2
3 nov. 2008 à 12:16
Lorsque je clique sur le bouton Me.ListBox3.Sorted =
True, la listbox est trié par ordre croissant

Lorsque je clique sur le bouton Me.ListBox3.Sorted =
False, la listbox n'est modifiée sachant que la propriété est à false.

Sachant que ma listbox est une importation des fichiers d'un répertoire, la liste est par défaut croissante même sans la valeur true. J'ai donc utilisé la solution de jmfmarques

 Dim ou As Integer
        ou = 0
        For i = 0 To ListBox3.Items.Count - 1

            ListBox3.Items.Insert(ou, ListBox3.Items(ListBox3.Items.Count - 1))
            ou = ou + 1
            ListBox3.Items.RemoveAt(ListBox3.Items.Count - 1)
        Next
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
3 nov. 2008 à 12:19
Bonjour,

Je me marre....

Le Pivert : Il ne suffit pas de passer à False la propriété Sorted.
Je sais bien où tu as lu celà, mais tu n'as pas tout lu ...
Elle n'est repassée à False que pour pouvoir y remettre, dans l'ordre inverse, le résultat (gardé en tremplin) du tri croissant ...

dsigmoun :

1) tu trouveras probablement (sur ce site) ce tri qui utilises un tremplin (opération de type "triangulaire")
2) je serais étonné de ce qu'une simple adaptation pour VB.Net de ce que j'ai écrit plus haut en VB6 ne te permette d'éviter ce type de manoeuvre "triangulaire"...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
2 déc. 2008 à 18:47
Le Pivert
Bonjour jmfmarques
C'est une coïncidence, j'ai juste besoin de ton code pour ma nouvelle source et je confirme ton avis car à ce moment là je voyez la chose différemment. Je te remercie car cela m'a été bien utile.
Je suis en VB2005
@+ Le Pivert
0
Rejoignez-nous