Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Trier un champ date dans un listview

2 réponses
Avatar
Codial
Bonjour à tous,

Je bute sur un problème de tri.

j'utilise cette Sub pour trier les colonnes d'un listview mais ça ne
fonctionne que sur les champs textes, je n'arrive pas à trier un champ date
avec!

Le champ date est bien déclaré comme date/heure.

Quelqu'un à une idée ?

D'avance merci

Cordialement

Codial
=================================
La Sub
=================================
Private Sub lvwDB_ColumnClick(ByVal ColumnHeader As Object)
If (lvwDB.SortKey = ColumnHeader.Index - 1) Then
If lvwDB.SortOrder = lvwAscending Then
lvwDB.SortOrder = lvwDescending
Else
lvwDB.SortOrder = lvwAscending
End If
Else
lvwDB.SortKey = ColumnHeader.Index - 1
lvwDB.SortOrder = lvwAscending
End If
lvwDB.Sorted = True
lvwDB.SelectedItem.EnsureVisible


End Sub

2 réponses

Avatar
Raymond [mvp]
Bonjour.

à ma connaissance, les items d'un listview ne sont pas formattés et ne sont
reconnus qu'en format texte même si la présentation est affichée selon un
affichage date.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13246 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"Codial" a écrit dans le message de news:

| Bonjour à tous,
|
| Je bute sur un problème de tri.
|
| j'utilise cette Sub pour trier les colonnes d'un listview mais ça ne
| fonctionne que sur les champs textes, je n'arrive pas à trier un champ
date
| avec!
|
| Le champ date est bien déclaré comme date/heure.
|
| Quelqu'un à une idée ?
|
| D'avance merci
|
| Cordialement
|
| Codial
| ================================ | La Sub
| ================================ | Private Sub lvwDB_ColumnClick(ByVal ColumnHeader As Object)
| If (lvwDB.SortKey = ColumnHeader.Index - 1) Then
| If lvwDB.SortOrder = lvwAscending Then
| lvwDB.SortOrder = lvwDescending
| Else
| lvwDB.SortOrder = lvwAscending
| End If
| Else
| lvwDB.SortKey = ColumnHeader.Index - 1
| lvwDB.SortOrder = lvwAscending
| End If
| lvwDB.Sorted = True
| lvwDB.SelectedItem.EnsureVisible
|
|
| End Sub
|
|
Avatar
Codial
Bonsoir Raymond,

Oui c'est exact, j'ai trouvé une solution en convertisant le champ date de
la colonne en décimal:
Dim i As Integer, j As Integer
lvwDB.Sorted = False
lvwDB.SortKey = ColumnHeader.Index - 1

'Boucle sur toutes les lignes
For i = 1 To lvwDB.ListItems.Count
lvwDB.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
CDec(CDate(lvwDB.ListItems(i). _
ListSubItems(ColumnHeader.Index - 1).Text))
Next i

If lvwDB.SortOrder = lvwAscending Then
lvwDB.SortOrder = lvwDescending
Else
lvwDB.SortOrder = lvwAscending
End If

lvwDB.Sorted = True

'Boucle sur toutes les lignes
For i = 1 To lvwDB.ListItems.Count
lvwDB.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
Format(CDate(lvwDB.ListItems(i).ListSubItems _
(ColumnHeader.Index - 1).Text), "DD/MM/YYYY")
Next i
End Sub

Cordialement

Codial

"Raymond [mvp]" a écrit dans le message
de news: %
Bonjour.

à ma connaissance, les items d'un listview ne sont pas formattés et ne
sont
reconnus qu'en format texte même si la présentation est affichée selon un
affichage date.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13246 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"Codial" a écrit dans le message de news:

| Bonjour à tous,
|
| Je bute sur un problème de tri.
|
| j'utilise cette Sub pour trier les colonnes d'un listview mais ça ne
| fonctionne que sur les champs textes, je n'arrive pas à trier un champ
date
| avec!
|
| Le champ date est bien déclaré comme date/heure.
|
| Quelqu'un à une idée ?
|
| D'avance merci
|
| Cordialement
|
| Codial
| ================================ > | La Sub
| ================================ > | Private Sub lvwDB_ColumnClick(ByVal ColumnHeader As Object)
| If (lvwDB.SortKey = ColumnHeader.Index - 1) Then
| If lvwDB.SortOrder = lvwAscending Then
| lvwDB.SortOrder = lvwDescending
| Else
| lvwDB.SortOrder = lvwAscending
| End If
| Else
| lvwDB.SortKey = ColumnHeader.Index - 1
| lvwDB.SortOrder = lvwAscending
| End If
| lvwDB.Sorted = True
| lvwDB.SelectedItem.EnsureVisible
|
|
| End Sub
|
|