Tri DataGridView avec des dates
Résolu/Fermé
Anonyme209
Messages postés
681
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
-
Modifié par Anonyme209 le 21/05/2015 à 19:37
Anonyme209 Messages postés 681 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 - 22 mai 2015 à 19:04
Anonyme209 Messages postés 681 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 - 22 mai 2015 à 19:04
A voir également:
- Tri DataGridView avec des dates
- Tri sur excel - Guide
- Logiciel tri photo gratuit - Guide
- Nombre de jours entre deux dates excel - Guide
- Peut on récupérer un colis au centre de tri chronopost - Forum Mobile
2 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
22 mai 2015 à 08:03
22 mai 2015 à 08:03
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/
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
22 mai 2015 à 17:19
22 mai 2015 à 17:19
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
Anonyme209
Messages postés
681
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
16
22 mai 2015 à 18:18
22 mai 2015 à 18:18
Bonjour,
Le code fonctionne mais altère le fonctionnement de mon programme.
Y-aurait-il un composant (même non directement intégré) qui trie automatiquement dans l'ordre chronologique?
Je n'aurais qu'à mettre mes lignes dans ce composant et à les remettre dans mon datagridview dans le bon ordre.
Le code fonctionne mais altère le fonctionnement de mon programme.
Y-aurait-il un composant (même non directement intégré) qui trie automatiquement dans l'ordre chronologique?
Je n'aurais qu'à mettre mes lignes dans ce composant et à les remettre dans mon datagridview dans le bon ordre.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Anonyme209
Messages postés
681
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
22 mai 2015 à 18:30
22 mai 2015 à 18:30
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
Anonyme209
Messages postés
681
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
16
22 mai 2015 à 19:04
22 mai 2015 à 19:04
J'ai réussi à trouver et à résoudre le problème de compatibilité avec ton premier code, et il fonctionne maintenant parfaitement.
Merci beaucoup de ton aide.
Merci beaucoup de ton aide.
22 mai 2015 à 16:35
J'ai essayé:
mais ça ne marche pas mieux