Tri de fichier par date

killy38 Messages postés 6 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 11 mai 2005 - 23 juin 2004 à 15:44
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 23 juin 2004 à 19:30
Bonjour à tous,

Je suis en train de développer un programme, mais je coince sur un truc tout bête : j'ai besoin de traiter tous les fichiers .dat d'un répertoire donné, mais je dois le faire du plus ancien au plus récent... et c'est là que le bat blesse, d'autant plus que je n'ai pas l'aide VB, ce qui est plutot génant !!

Merci d'avance pour vos contributions à l'avancée de mon problème !

4 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
23 juin 2004 à 16:46
Salut

Voilà l'aide de vb6 pour FileDateTime :

FileDateTime, fonction


Renvoie une valeur de type Variant (Date) indiquant la date et l'heure de création ou de dernière modification d'un fichier.

Syntaxe

FileDateTime(pathname)

L'argument pathname est uneexpression de chaîne définissant un nom de fichier. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.

FileDateTime, fonction, exemple
Cet exemple utilise la fonction FileDateTime pour déterminer la date et l'heure de création ou de dernière modification d'un fichier. Le format de date et d'heure affiché est fonction des paramètres régionaux de votre système.

Dim MyStamp
' Suppose que la dernière modification du fichier FICHTEST a
' eu lieu le 12 février 1993 à 4:35:47. Suppose que les
' paramètres régionaux correspondent à Français (standard).
MyStamp = FileDateTime("FICHTEST") ' Renvoie "12/2/93 4:35:47".

Cordialement

CanisLupus
0
cs_chti_mi Messages postés 2 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 23 juin 2004
23 juin 2004 à 17:03
2nde solutions

Voici une fonction issue de l'aide
affiche tous les fichiers d'un répertoire

Sub AfficheListeFichier(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 in fc
s = s & f1.name
s = s & vbCrLf
Next
MsgBox s
End Sub

Voici le code pour afficher la dernière date affichée :

Sub AfficheInfoAccesFichier(specfichier)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = UCase(specfichier) & vbCrLf
s = s & "Créé le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified
MsgBox s, 0, "Infos d'accès au fichier"
End Sub
0
killy38 Messages postés 6 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 11 mai 2005
23 juin 2004 à 18:22
ce que j'ai fait :

Ma strucuture :
' déclaration de la structure pour les fichiers .dat : nom + date
Public Type FichierDat
NomFic As String
DateFic As Date
End Type

donc j'ai récupéré, pour chaque fichier, sa date et son nom.
Une fois que j'ai une liste cette liste, j'aimerai pouvoir la trier sur les dates, pour traiter mes fichiers du plus ancien au plus récent.

ça inspire quelqu'un, ça ?

Merci d'avance
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
23 juin 2004 à 19:30
Salut,

Le grosss pb ds le tri des dates dans une liste c que ces dates sont traduites en texte quand on les affiche ds une liste quelconque. Donc le format habituel français jj/mm/aaaa ne convient pas pour un tri (le format anglais mm/dd/yyyy c moins idiot sauf si c sur +sieurs années).
Pour etre sûr, j'adopte le format "yyyy/mm/dd" et là c cool.

Un ex avec une listview :

' Ds Projets/Composants : Microsoft Windows Common Controls 6.0 (SP6)
Dim ItemX As ListItem
Dim i As Integer
Dim Liste_Fichiers()

ReDim Liste_Fichiers(4, 2)
Liste_Fichiers(0, 0) = "Fichier_1"
Liste_Fichiers(0, 1) = "02/02/2004"
Liste_Fichiers(1, 0) = "Fichier_2"
Liste_Fichiers(1, 1) = "05/01/2004"
Liste_Fichiers(2, 0) = "Fichier_3"
Liste_Fichiers(2, 1) = "01/01/2004"
Liste_Fichiers(3, 0) = "Fichier_4"
Liste_Fichiers(3, 1) = "25/01/2004"
Liste_Fichiers(4, 0) = "Fichier_5"
Liste_Fichiers(4, 1) = "20/02/2004"

ListView1.GridLines = True ' pour afficher les séparations entre lignes et colonnes
ListView1.FullRowSelect = True ' pour la sélection de la ligne entière
ListView1.View = lvwReport ' affichage détails
ListView1.LabelEdit = lvwManual ' pour empecher les modifs ds la 1ere colonne

' Nom des colonnes
ListView1.ColumnHeaders.Add , , "Nom", ListView1.Width / 2
ListView1.ColumnHeaders.Add , , "", 0 ' pour le tri sur la date
ListView1.ColumnHeaders.Add , , "Date", ListView1.Width / 2

' Remplissage de la listview
For i = LBound(Liste_Fichiers) To UBound(Liste_Fichiers)
Set ItemX = ListView1.ListItems.Add(, "K" & i, Liste_Fichiers(i, 0))
ItemX.SubItems(1) = Format(Liste_Fichiers(i, 1), "yyyy/mm/dd")
ItemX.SubItems(2) = Liste_Fichiers(i, 1)
Next

ListView1.SortKey = 1
ListView1.Sorted = True

Pour récupérer le nom du fichier sélectionné :

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
msgbox = Item
End Sub

Cordialement

CanisLupus
0
Rejoignez-nous