rheslot
Messages postés5Date d'inscriptionlundi 19 mai 2008StatutMembreDernière intervention30 novembre 2010
-
2 juin 2009 à 16:46
rheslot
Messages postés5Date d'inscriptionlundi 19 mai 2008StatutMembreDernière intervention30 novembre 2010
-
15 juin 2009 à 16:37
Bonjour
J'utilise pour la 1ère fois une listview sous Access 2003 ; je dois faire des tris sur des colonnes qui sont en decimal , txt ou date. J'ai bien trouvé des sources comme celle ci-dessous (uniquement pour les dates car j'ai un msg d'erreur lorsque c'est du txt) mais je n'arrive pas à trouver un code qui fasse l'ensemble .
La structure de ma listview est dec-date-txt... J'ai trouvé un code générique à l'ensemble des formats mais il ne trie que le txt.
Ci-dessous le code que j'utilise.
Merci de votre aide car je ne suis pas champion en la matière.
RH49
Private Sub listview3_ColumnClick(ByVal ColumnHeader As Object)
Dim i As Integer, j As Integer
For i = 1 To ListView3.ListItems.Count
ListView3.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
CDec(CDate(ListView3.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text))
Next i
If ListView3.SortOrder = lvwAscending Then 'partie du code qui ne trie que le txt
ListView3.SortOrder = lvwDescending
Else
ListView3.SortOrder = lvwAscending
End If 'partie du code qui ne trie que le txt
ListView3.Sorted = True
For i = 1 To ListView3.ListItems.Count
ListView3.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
Format(CDate(ListView3.ListItems(i).ListSubItems _
(ColumnHeader.Index - 1).Text), "DD/MM/YYYY")
Next i
End Sub
rheslot
Messages postés5Date d'inscriptionlundi 19 mai 2008StatutMembreDernière intervention30 novembre 2010 2 juin 2009 à 20:14
Merci pour l'aide,
le msg d'erreur "Incompatibilité de type" ( lorsque je clique sur une entête de colonne qui est en dec ou txt. et il est sur cette ligne:
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 juin 2009 à 19:33
Salut
Message d'erreur ? lequel et sur quelle ligne ?
A mon avis, il faut faire un tri spécifique selon que la colonne représente une date, un nombre ou du texte.
En VB6 (mais facilement transposable au VBA), il y a le listing de <cette source> Tu la mets dans un module dans ton projet puis, quand tu veux faire un tri, tu colles le code utilisé dans <ce listing> dans le _ColumnClick (sans l'appel au RAZTriage)
Mais cela sous-entend que tu saches le type de donnée de ta colonne avant de commencer le tri (je le pense)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
rheslot
Messages postés5Date d'inscriptionlundi 19 mai 2008StatutMembreDernière intervention30 novembre 2010 15 juin 2009 à 16:37
L'adaptation du code ne fonctionne pas ; j'ai par contre trouvé une solution qui fonction pour le tri sur un type "date" mais ça ne fonctionne pas avec du txt ou du dec. Y at-il un moyen de mixer les 2 codes ?
Code qui fonctionne pour toutes les colonnes mais qui ne trie pas date et dec/
Private Sub listview3_ColumnClick(ByVal ColumnHeader As Object)
'Boucle sur toutes les lignes
For i = 1 To ListView3.ListItems.Count
ListView3.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
CDec(CDate(ListView3.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text))
Next i
If ListView3.SortOrder = lvwAscending Then
ListView3.SortOrder = lvwDescending
Else
ListView3.SortOrder = lvwAscending
End If
ListView3.Sorted = True
'Boucle sur toutes les lignes
For j = 1 To ListView3.ListItems.Count
ListView3.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
Format(CDate(ListView3.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text), "DD/MM/YYYY")
Next i
End Sub
RH49