IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

tri par entête d'un listbox


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut tri par entête d'un listbox
    Bonjour
    Je suis en train de développer une application vb6 qui contient plusieurs listbox
    Je cherche une procédure qui permet de trier les données dans le listbox selon l'entête que l'utilisateur à cliquer sur elle par exemple
    si j'ai un list box qui contient les entête suivante:

    N° | Date |Montant

    S'il clique sur N° les données vont être triée selon les N° dans l'ordre croissant par défaut et s'il répète le clique sur le N° l'ordre devient l'inverse (Décroissant)

    ainsi pour les autres colonnes de l'entête.

    Merci d'avnace

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Heu, tu est sûr qu'il s'agit bien d'un listbox ?
    Le listbox que je connais n'a qu'une colonne et n'a pas de titre.
    maintenant je ne connais pas tout.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par bargougui86 Voir le message
    Bonjour
    Je suis en train de développer une application vb6 qui contient plusieurs listbox
    Je cherche une procédure qui permet de trier les données dans le listbox selon l'entête que l'utilisateur à cliquer sur elle par exemple
    si j'ai un list box qui contient les entête suivante:

    N° | Date |Montant

    S'il clique sur N° les données vont être triée selon les N° dans l'ordre croissant par défaut et s'il répète le clique sur le N° l'ordre devient l'inverse (Décroissant)

    ainsi pour les autres colonnes de l'entête.

    Merci d'avnace
    Je rectifie , je me suis trompé au nom du composant c'est un listview vb6

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Voir propriétés SortOrder et Sorted...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ' Tri lors du clic sur colonne ----------
    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
        ListView1.Sorted = False
        ListView1.SortKey = ColumnHeader.Index - 1
        'permet de passer de
        'lvwDescending  = 1
        'lvwAscending = 0
        'et vice-versa.
        ListView1.SortOrder = 1 - ListView1.SortOrder
        ListView1.Sorted = True
    End Sub


  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par bbil Voir le message
    Voir propriétés SortOrder et Sorted...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ' Tri lors du clic sur colonne ----------
    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
        ListView1.Sorted = False
        ListView1.SortKey = ColumnHeader.Index - 1
        'permet de passer de
        'lvwDescending  = 1
        'lvwAscending = 0
        'et vice-versa.
        ListView1.SortOrder = 1 - ListView1.SortOrder
        ListView1.Sorted = True
    End Sub

    Le code que vous m'avez donné marche dans certain cas et dans d'autre cas non par exemple si j'ai une colonne qui contient des montant ou des numéro exemple (1000,500; 2000) le trie ne s'applique pas mais si j'ai des date ou des caractères le trie fonctionne correctement

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    Citation Envoyé par bargougui86 Voir le message
    Le code que vous m'avez donné marche dans certain cas et dans d'autre cas non par exemple si j'ai une colonne qui contient des montant ou des numéro exemple (1000,500; 2000) le trie ne s'applique pas mais si j'ai des date ou des caractères le trie fonctionne correctement
    salut

    non, ton tri ne peut fonctionner coçrrectement avec des dates que si elles sont le la forme aaaa/mm/jj ou juliennes

    Le tri se fait sur des strings.
    Tu peux donc atteindre ton but, sans rien toucher à des données telles qu'elles sont en :
    -ajoutant des colonnes invisibles où tu y formates des données (création de chaînes précédées d'"espaces ou de 0 pour les nombres, formatage de tes dates vers aaaa/mm/jj)
    - triant sur les colonnes invisibles.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par babaothe Voir le message
    salut

    non, ton tri ne peut fonctionner coçrrectement avec des dates que si elles sont le la forme aaaa/mm/jj ou juliennes

    Le tri se fait sur des strings.
    Tu peux donc atteindre ton but, sans rien toucher à des données telles qu'elles sont en :
    -ajoutant des colonnes invisibles où tu y formates des données (création de chaînes précédées d'"espaces ou de 0 pour les nombres, formatage de tes dates vers aaaa/mm/jj)
    - triant sur les colonnes invisibles.
    Bonjour, du retour
    J'ai pas bien compris votre idée vouss pouvez m'expliquer un peut??

  8. #8
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 126
    Points
    126
    Par défaut
    Voir propriétés SortOrder et Sorted...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ' Tri lors du clic sur colonne ----------
    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
        ListView1.Sorted = False
        ListView1.SortKey = ColumnHeader.Index - 1
        'permet de passer de
        'lvwDescending  = 1
        'lvwAscending = 0
        'et vice-versa.
        ListView1.SortOrder = 1 - ListView1.SortOrder
        ListView1.Sorted = True
    End Sub
    Il faut d'abord initialiser la grille en ajoutant des colonnes invisible (largeur=0) dans lesquelles les données sont formatées pour que le tri fonctionne.
    Ensuite, il faut modifier le code ci-dessus pour que par exemple si Colonne1 est ma colonne visible et Colonne2 contient les mêmes données mais formatées pour être "triables", lorsque je clic sur Colonne1, le tri est appliqué sur Colonne2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ' Tri lors du clic sur colonne ----------
    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
    Dim lColonne as long
    
        lColonne = ColumnHeader.Index - 1
        Select Case lColonne
            Case 0
                lColonne = lColonne + 1
        End Select
    
        ListView1.Sorted = False
        ListView1.SortKey = lColonne
        'permet de passer de
        'lvwDescending  = 1
        'lvwAscending = 0
        'et vice-versa.
        ListView1.SortOrder = 1 - ListView1.SortOrder
        ListView1.Sorted = True
    End Sub

  9. #9
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par spdev666 Voir le message
    I dans lesquelles les données sont formatées pour que le tri fonctionne.
    Vous pouvez m'expliquer qu'est ce que cela veut dire formatée?????
    Car j'ai ajouté des colonne invisible et au niveau du remplissage j'ai fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Set l = List1.ListItems.Add
           l.Text = rs("FT_FAC_NUM")
            I = List1.ListItems.Count + 1
            l.ListSubItems.Add , , CStr(rs("FT_FAC_NUM"))
     
            l.ListSubItems.Add , , rs("FT_DATE")
            l.ListSubItems.Add , , CStr(rs("FT_DATE"))
     
            l.ListSubItems.Add , , rs("FT_AGENCE")
            l.ListSubItems.Add , , rs("FT_TTC")
            l.ListSubItems.Add , , rs("FT_PM")
            l.ListSubItems.Add , , rs("FT_TD")
    J'ai testé le tri pour la colonne du numéro des facture et la colonne des date mais le trie ne fonctionne pas.

  10. #10
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim MeDate As Date
    MeDate = "13/04/1956"
    MsgBox MeDate 'pas de formatage
    MsgBox Format(MeDate, "yyyy/mm/dd") 'formaté
    MsgBox Year(MeDate) & "/" & Month(MeDate) & "/" & Day(MeDate) 'formaté
    Formatage: mise en forme autre que le style par défaut.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim MeDate As Date
    MeDate = "13/04/1956"
    MsgBox MeDate 'pas de formatage
    MsgBox Format(MeDate, "yyyy/mm/dd") 'formaté
    MsgBox Year(MeDate) & "/" & Month(MeDate) & "/" & Day(MeDate) 'formaté
    Formatage: mise en forme autre que le style par défaut.
    Si j'ai une colonne qui contient des numéro comment la formater????

  12. #12
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    En allant voir dans l'aide de VB peut être ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

Discussions similaires

  1. fonction de tri par introspection
    Par ned-flanders dans le forum C++
    Réponses: 7
    Dernier message: 21/10/2004, 11h49
  2. [ XML ][ XSL ] tri par date
    Par zozolh2 dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/08/2004, 10h19
  3. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34
  4. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27
  5. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo