Problème de tri des données d'un listbox

Résolu
zeusensa Messages postés 21 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 29 mai 2011 - 30 avril 2011 à 14:28
zeusensa Messages postés 21 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 29 mai 2011 - 1 mai 2011 à 13:07
bonjour,
SVP j'ai besoin de votre aide : je suis en train de développer une application sous VB.NEt 2005 express , et je suis bloqué sur un traitement depuis pas mal de temps: j'ai besoin de remplir un listbox avec des données ( cette tache est réalisé sans aucun problème) puis je veux trier ces résultats dans un sens décroissant( je l'ai effectué avec sucés) puis les affecter à nouveau au même listbox! le problème que j'ai c 'est que mon ListBox reçoit les données avant tri..puis il ajoute les données triées! alors que je ne veux afficher que les données triés seulement!!!
voici mon code :
Dim ee As New connexion
        Dim myQuery3, myQuery, myQuery1, myQuery2 As String
        ee.oConn.Open()
        Dim compteur As Integer
        myQuery = "select duree_panne from historique  where code_machine='" & ComboBox9.Text & "';"
        myQuery1 = "select distinct code_panne from historique  where code_machine='" & ComboBox9.Text & "';"

        myQuery3 = "select sum(duree_panne) from historique  where code_machine='" & ComboBox9.Text & "';"

        Dim MaCommande1 As New MySqlCommand(myQuery3, ee.oConn)
        Dim MaCommande2 As New MySqlCommand(myQuery, ee.oConn)
        Dim MaCommande3 As New MySqlCommand(myQuery1, ee.oConn)
        compteur = MaCommande1.ExecuteScalar
        Dim i, j As Integer
        Dim var As Double

        MaCommande3.ExecuteNonQuery()
        Dim dr, dr2 As MySqlDataReader
        dr = MaCommande3.ExecuteReader()
        While (dr.Read())

            ListBox1.Items.Add(dr.GetValue(i))

        End While
        dr.Close()

        For i = 0 To ListBox1.Items.Count - 1

            myQuery2 = "select sum(duree_panne) from historique  where code_machine='" & ComboBox9.Text & "' and code_panne='" & ListBox1.Items.Item(i) & "';"

            Dim MaCommande4 As New MySqlCommand(myQuery2, ee.oConn)
            dr2 = MaCommande4.ExecuteReader

            While dr2.Read

                ListBox2.Items.Add(dr2.GetValue(0))
            End While
            dr2.Close()
        Next
        Dim tab(ListBox2.Items.Count - 1) As Double
        Dim cara(ListBox2.Items.Count - 1), c As String

        'stockage des données du listbox dans un tableau 
        For i = 0 To ListBox2.Items.Count - 1
            tab(i) = ListBox2.Items.Item(i)
            'ListBox2.Items.Remove(ListBox2.Items.Item(i))

            cara(i) = ListBox1.Items.Item(i)
            'ListBox1.Items.Remove(ListBox1.Items.Item(i))
        Next


        'tri du tableau 
        For i = 0 To ListBox2.Items.Count - 1
            For j = i + 1 To ListBox2.Items.Count - 1
                If tab(i) < tab(j) Then
                    var = tab(j)
                    tab(j) = tab(i)
                    tab(i) = var

                    c = cara(j)
                    cara(j) = cara(i)
                    cara(i) = c
                End If
            Next j
        Next i

        'For i = 0 To ListBox1.Items.Count - 1
        '    MsgBox(cara(i))
        'Next

        'remplissage du listbox avec les données triées à partir du tableau 

        For i = 0 To ListBox1.Items.Count - 1

            ListBox2.Items.Add(tab(i))

            ListBox1.Items.Add(cara(i))
        Next

2 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
1 mai 2011 à 13:02
bonjour
au lieu de remplir le listbox la premiere fois mets tes données dans un array puis fais un array.sort et seulement ensuite tu fais un listbox.clear et tu copy l'array dans la listbox


si c'est la solution, penser : REPONSE ACCEPTEE
3
zeusensa Messages postés 21 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 29 mai 2011
1 mai 2011 à 13:07
merci beaucoup :)
0
Rejoignez-nous