Listview : trier des dates au chargement de celle-ci : merci

Résolu
Signaler
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007
-
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007
-
Salut tlm.
J'avai un probleme de tri pour ma listview et le voila résolu.
Cependant jaimerai la trier cette listview et ce tri est un tri de date. Ce tri de date jaimerai qu'il soit automatique dans le sens ou je ne veut pas qu'il se fasse lorsque je clic sur ma listview ou sur une de ses colonnes mais que ce tri se fasse au chargement de la listview.
Voila donc pour ceux qui auraient réponse a ma question...
Merci à vous ^^
Bonne journée.

>>>> PS : je possede VB 6.0

j'ai deja essayé de resoudre le probleme avec des sort et des sortkey mais bon je ne m'y connais pas donc ce fut un echec....

8 réponses

Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

Voici ce à quoi j'avais pencer aussi pour ceux qui veulent : ( un peu barbare mais ca marche très bien )

dim dat as string
dim dte as string
dim intvar as integer

strFormat = "YYYY/MM/DD"
normFormat = "DD/MM/YYYY"

'transformation date avec new format : je l'ait fait en 3 ligne pour que ca soit plus clair mais
'on peut le faire en une ou alors avec un with par exemple ....)

For intvar = 1 To lstview.ListItems.Count
dat = Format(lstview.ListItems.Item(intvar).SubItems(3))
dte = Format$(dat, strFormat)
lstview.ListItems.Item(intvar).SubItems(3) = dte
Next intvar

'tri par jour :
lstview.SortKey = lstview.ColumnHeaders.Item(4).SubItemIndex
lstview.Sorted = True
lstview.SortOrder = lvwAscending

'Redefinition ancien format
For intvar = 1 To lstview.ListItems.Count
dte = Format$(lstview.ListItems.Item(intvar).SubItems(3), normFormat)
lstview.ListItems.Item(intvar).SubItems(3) = dte
Next intvar
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
... en cherchant un peu ...
http://www.vbfrance.com/article.aspx?ID=9852

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
Dans ta procédure de chargement de la ListView, ajoute cette ligne à la fin.
(juste après la commande de chargement.), je ne connais pas ton code mais j'ai essyé avec le mien et cela fonctionne.

ListView1.Sorted = True

jpleroisse
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

Thx Jack mais comme je le disais je voudrais un tri qui se fasse sans clic de
souris sur la colonne. Le problème c'est donc que je n'est pas de
columnheader de recupéré. Ma listview elle donne ca :

titre | Libelle | Numero | Date

et mes dates sont de format "DD/MM/YYYY"
donc en fait fodrait que je les convertissent en YYYYMMDD ca je l'avais
bien compris mais après je ne sais pas comment faire pour trier a partir
de la colonne 4.

Merci aussi jpleroisse mais comme tu peut le voir j'ai plusieurs colonnes donc et par conséquent ....
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

Alors voila ou jen suis :

lstview.SortKey = lstProchainNumParution.ColumnHeaders.Item(4).SubItemIndex
lstview.SortOrder = lvwAscending
lstview.Sorted = True

jai donc reussi a selectionner ma colonne voulu chose que je n'avais pas reussi a faire au paravant.
Le problème est le suivant : il tri en fonction des jours
Donc fodrai que je convertisse toutes les dates en yyyy/mm/dd
g essayer de fair :

for i =0 to lstview.listitems.count
lstview.listitems.item(i).subitem(3)=format(lstview.listitems.item(i).subitem(3)
, "yyyymmdd")
next i

metre les 3 ligne de la haut ( .sort* ) et de tout reconvertir dans le sens
contraire mais ca ne marche pas comme ca apparemment. Si vous trouvez
marci bcp ^^

Bonne day a vous :))
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

En fait j'ai trouver sans trouver : c'est à dire que je n'est pas trier les dates en visual basic. J'ai modifié ma requete sql pour que le tri se fasse automatiquement avec un order by ( en fait pour d'autres raisons j'avais du faire un tri de titre de journal) et j'ai trouver une autre requete qui m'a trié ces journaux. Le order by etant libre j'ai pu l'utiliser pour mes dates.
Merci quand même à ceux qui ont cherché :p


<IMG src="/imgs2/smile_c
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Re
Si tu avais eu la curiosité de charger et regarder la source que je te proposais, tu aurais vu qu'elle résoud ton problème de classement de date.
Il suffit de lancer cette demande de classement avec un autre évènement que le click sur une colonne, pardis !
Bref, tu fais comme tu le sens.

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

Je ne dit pas le contraire. C'est juste qu'en fait j'ai trouver cette solution au paravant.
Cependant j'avais quand même regardé ce qui était fait dans le source et je l'avais appliquer sur une fonction. Le probleme c'est que je n'arrivai pas à récupéré la valeur Index. De plus j'ai beau avoir mis dans les références les librairies j'ai un probleme avec le listsubitem et donc je n'arrive pas a acceder au tag et au text.
Si tu vois d'ou cela peut provenir merci de me le faire savoir jack :)
Bonne journée.