Tri DataGridView avec des dates
Résolu/Fermé
Anonyme209
Messages postés
679
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 679 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 679 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
- Excel tri par date ne fonctionne pas ✓ - Forum Excel
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Tri automatique excel ✓ - Forum Excel
- Tri a bulle en c - Forum C
- Tri automatique excel sans macro - Forum Excel
2 réponses
cs_Le Pivert
Messages postés
7883
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 mars 2023
724
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
7883
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 mars 2023
724
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
679
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
19
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
7883
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 mars 2023
724
>
Anonyme209
Messages postés
679
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
679
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
19
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