Tri DataGridView avec des dates
Résolu
Anonyme209
Messages postés
761
Statut
Membre
-
Anonyme209 Messages postés 761 Statut Membre -
Anonyme209 Messages postés 761 Statut Membre -
Bonjour,
Dans la colonne de ma DataGridView, j'ai diverses dates.
Je voudrais que ma DataGridView trie mes données en fonction des dates par ordre chronologique et inversement.
Avec DataGridView.Sort, les dates sont triées comme du texte normal, et ça donne ça:
Merci de votre aide.
Dans la colonne de ma DataGridView, j'ai diverses dates.
Je voudrais que ma DataGridView trie mes données en fonction des dates par ordre chronologique et inversement.
Avec DataGridView.Sort, les dates sont triées comme du texte normal, et ça donne ça:
01/01/2001 00:00
20/10/2015 00:00
30/05/2014 00:00
Merci de votre aide.
A voir également:
- Tri DataGridView avec des dates
- Comment faire un tri personnalisé sur excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Logiciel tri photo - Guide
- Tri turf - Télécharger - Sport
- En cours de traitement sur le site de tri local ✓ - Forum Réseaux sociaux
2 réponses
Bonjour,
Il faut que tu indiques le Type Date et non pas String dans ta colonne.
Voir ceci:
https://www.developpez.net/forums/d897729/dotnet/langages/vb-net/trier-colonne-type-date-datagridview/
Il faut que tu indiques le Type Date et non pas String dans ta colonne.
Voir ceci:
https://www.developpez.net/forums/d897729/dotnet/langages/vb-net/trier-colonne-type-date-datagridview/
Tu peux te servir d'un comparateur comme pour une listView.
Voici le code:
Voici le code:
Private Sub DataGridView1_SortCompare(sender As Object, e As DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare
'Récupérer le composant
Dim grid As DataGridView = DirectCast(sender, DataGridView)
'Définir le nom des colonnes (à changer en fonction de tes propres paramètres)
Dim colonneDate As String = "Date" 'a adapter
'Traitement en fonction de la colonne où se situe la cellule en cours d'édition
Select Case e.Column.Name
Case colonneDate
e.SortResult = System.DateTime.Compare(CDate((e.CellValue1)), CDate((e.CellValue2)))
e.Handled = True
End Select
End Sub
'on peut mettre ce code dans un bouton
Private Sub DataGridView1_ColumnHeaderMouseDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseDoubleClick
With DataGridView1
.Sort(.Columns("Date"), System.ComponentModel.ListSortDirection.Descending)
End With
End Sub
'on peut mettre ce code dans un bouton
Private Sub DataGridView1_ColumnHeaderMouseClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
With DataGridView1
DataGridView1.Sort(.Columns("Date"), System.ComponentModel.ListSortDirection.Ascending)
End With
End Sub
Dans l'exemple que je t'ai montré, il n'y a qu'une colonne, il faut mettre toutes les colonne et voir si cela n'altère pas ton programme:
Corrige:
Dim colonneDate As Date = "Date" 'a adapter
au lieu de
Dim colonneDate As String = "Date" 'a adapter
Sinon dernière option, mettre les dates à l'américaine comme pour les photos:
2015/02/15
'Définir le nom des colonnes (à changer en fonction de tes propres paramètres)
Dim colonneDate As Date = "Date" 'a adapter
Dim colonneNom As String= "Nom" 'a adapter
'etc.
'Traitement en fonction de la colonne où se situe la cellule en cours d'édition
Select Case e.Column.Name
Case colonneDate
e.SortResult = System.DateTime.Compare(CDate((e.CellValue1)), CDate((e.CellValue2)))
e.Handled = True
Case colonneNom
e.SortResult = System.DateTime.Compare(String((e.CellValue1)), String((e.CellValue2)))
e.Handled = True
. End Select
'etc.
Corrige:
Dim colonneDate As Date = "Date" 'a adapter
au lieu de
Dim colonneDate As String = "Date" 'a adapter
Sinon dernière option, mettre les dates à l'américaine comme pour les photos:
2015/02/15
J'ai essayé:
mais ça ne marche pas mieux