Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Question listview et date

  • Initiateur de la discussion Initiateur de la discussion Byfranck
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Byfranck

XLDnaute Occasionnel
Bonjour à tous,

Je calle sur un détail:
J'ai un USF avec Listview qui extrait des valeurs d'un tableau.
J'ai 3 colonnes date au format jj/mm/yyyy
les valeurs sont introduites à partir d'un autre usf et des TextBox.
Les pb de format type jj/mm/yyyy qui devenaient mm/jj/yyyy sont réolus.

Maintenant que je clique sur l'entête de colonne pour classer par ordre croissant ou décroissant, ce click sur les colonnes date ne donne pas le résultat attentu: les lignes avec valeur date sont placée en haut (ou en bas) de tableau, mais pas classées par ordre croissant ou décroissant.

pour in info j'ai dans donc mon USF de saisie:

Pour conserver l'odre jour/mois/année

Code:
 If IsDate(résultat.TextBox39.Value) Then
    ActiveCell.Offset(0, 177).Value = CDate(résultat.TextBox39.Value)
Else
    ActiveCell.Offset(0, 177).Value = résultat.TextBox39.Value
End If

et pour éviter les erreurs de saisie:

Code:
Private Sub TextBox39_Change()
If Len(TextBox39) = 2 Or Len(TextBox39) = 5 Then TextBox39 = TextBox39 & "/"
End Sub

Private Sub TextBox39_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Quelqu'un pour me donner un coup de main?

Merci d'avance

Cordialement
 
Re : Question listview et date

RE-bonjour,

j'ai remplacé par ton code.
Pas de changement côté tri par date (sur la date 1 c'est visible) toujours classé dans le désordre quand on clik sur l'entête.

Une autre idée?

@+
 
Re : Question listview et date

Re-bonjour,

Le problème ne vient pas de là. 🙁

Ci-joint un fichier épuré la colonne ne comporte que des dates.

en cliquant sue l'entête de la colonne le classement des dates ne se fait pas 😡

Au secours!

Cordialement
 

Pièces jointes

Dernière édition:
Re : Question listview et date

Bonsoir,
Bin là en fait tu mets les jours dans l'ordre😀
Avec des dates, c'est plus compliqué.
Adapté du code de J. Malatier (Developpez)
N'oublie d'indiquer l'index des colonnes contenant des dates, séparés par une virgule (2 dans ton dernier fichier)
Code:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim i As Integer, j As Integer
   
    ListView1.Sorted = False
    ListView1.SortKey = ColumnHeader.Index - 1
    
    Select Case ColumnHeader.Index
    
    Case 2 'indique ici la ou les colonnes contenant des dates
    
        'Boucle sur toutes les lignes
        For i = 1 To ListView1.ListItems.Count
            'Passage des données au format décimal
            ListView1.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
                CDec(CDate(ListView1.ListItems(i). _
                    ListSubItems(ColumnHeader.Index - 1).Text))
        Next i
        ' ------ Application du tri -----------
        If ListView1.SortOrder = lvwAscending Then
            ListView1.SortOrder = lvwDescending
            Else
            ListView1.SortOrder = lvwAscending
        End If
        ListView1.Sorted = True
        '--------------------------------------
        'Boucle sur toutes les lignes
        For i = 1 To ListView1.ListItems.Count
            'Ensuite on revient au format DD/MM/YYYY
            ListView1.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
                Format(CDate(ListView1.ListItems(i).ListSubItems _
                        (ColumnHeader.Index - 1).Text), "DD/MM/YYYY")
        Next i
        
    Case Else
        If ListView1.SortOrder = lvwAscending Then
            ListView1.SortOrder = lvwDescending
            Else
            ListView1.SortOrder = lvwAscending
        End If
        ListView1.Sorted = True
    End Select
    
End Sub
A+
kjin
 
Re : Question listview et date

YEPiiiii !!

ça marche !
Merci Kjin!
Donc si j'ai bien compris c'est ici que je dois indiquer les colonnes avec des dates?
case 2, case 5, case 6, etc ...

ou peut être
case 2, 5, 6 etc...

Cordialement @ +
 
Dernière édition:
Re : Question listview et date

Ee re Bonsoir Kjin ...

C'était presque bon ..
Si j'ai une cellule sans valeur ça plante ...🙁
en plus dans mon cas j'ai des cellule avec "Saisir Date"😡

Docteur y'a une solution pour ça ?

@+
 
Re : Question listview et date

Re,
Je ne vois pas l'intérêt de trier dans ce cas et ça deviendra vite l'usine à gaz.
Pour limiter les dégats
Code:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim i As Integer, j As Integer
   
    ListView1.Sorted = False
    ListView1.SortKey = ColumnHeader.Index - 1
    
    Select Case ColumnHeader.Index
    
    Case 2 'indique ici la ou les colonnes contenant des dates

    [COLOR="Red"]On Error Resume Next[/COLOR]

        'Boucle sur toutes les lignes
        For i = 1 To ListView1.ListItems.Count
'.....
A+
kjin
 
Re : Question listview et date

Re-

On va éviter l'usine à gaz ....


Avec "On Error Resume Next" j'ai quelque chose qui est OK pour mon appli!
Le top aurait été que les cellules vides ou avec du texte restent en bas ..
(en ordre croissanr les cellules vides sont en primier et comme il y a plusieurs dizaines de lignes vides sur un millier de ligne faut penser à aller voir en bas!

mais je pense que c'est de ça quand tu parles d'usine à gaz ...


Un GRAND merci déjà pour qui est fait et bonne soirée
Franck
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
306
Réponses
2
Affichages
159
Réponses
2
Affichages
518
Réponses
21
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…