SortKey ListView suivant xième colonne?

IFFIC

XLDnaute Occasionnel
Bonjour à ceux qui passeront par là.
Et Grand Merci à ceux qui m'ont tant aidé.

Voici mon Blème…

Je dresse dans ma ListView la liste des fichiers du dossier
Où le présent classeur se trouve.
Mon souci est de faire apparaître la liste en ordre chronologique.
Donc suivant les dates citées dans la deuxième colonne.

Private Sub CommandButton3_Click() ' C'est ici que je patine..!!!
UserForm1.ListView1.Sorted = True
UserForm1.ListView1.SortOrder = lvwAscending
'UserForm1.ListView1.SortKey = La colonne avec la date.......?
End Sub

Si quelqu'un peut m'aider à ne pas me coucher trop tard…
Merci d'avance.

Et bonne soirée.

IFFIC
 

Pièces jointes

  • LISTING.zip
    16.4 KB · Affichages: 30
  • LISTING.zip
    16.4 KB · Affichages: 32
  • LISTING.zip
    16.4 KB · Affichages: 33

MichelXld

XLDnaute Barbatruc
Re : SortKey ListView suivant xième colonne?

bonjour Iffic

Une solution pour trier les dates dans la ListView consiste à les passer au format décimal, effectuer le tri puis repasser au format DD/MM/YYYY.


Code:
' ------ Tri d'une colonne  contenant des Dates -------
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
   Dim i As Integer, j As Integer
 
    ListView1.Sorted = False
    ListView1.SortKey = ColumnHeader.Index - 1
 
    '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
End Sub


un autre exemple

ftp://ftp-developpez.com/silkyroad/fichiers/ListViewExcel.zip


bon apres midi
MichelXld
 

IFFIC

XLDnaute Occasionnel
Re : SortKey ListView suivant xième colonne?

Bonsoir Michel (Toujours là pour aider)
et aussi à ceux qui passeront par là.

Je ne pensais pas à devoir bidouller ainsi les formatsCDate.
Je vais copier, et appliquer ta méthode.

Merci beaucoup à toi,
et plein de bonnes choses
en cette soirée.

P.S. Je suis un peu surpris de ne pas avoir eu trop de lecture
sur ma proposition de 14h47. T'en penses quoi?

Amicalement IFFIC
 

Statistiques des forums

Discussions
312 845
Messages
2 092 764
Membres
105 529
dernier inscrit
StarExcel