Tri décroissant d'une listbox

Résolu
Signaler
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
15 février 2011
-
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
-
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

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
128
Le Pivert
Bonjour


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


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


 
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
15 février 2011
2
La valeur False de Sorted ne fait pas de tri du tout.
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
128
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

 
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
15 février 2011
2
Ma listbox a bien comme propriété false.

Je mets bien Me.ListBox3.Sorted =
True
,mais le tri est toujours croissant
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
128
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
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
15 février 2011
2
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
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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"...
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
128
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