Pb avec Datelastmodified

p.pat27

XLDnaute Junior
bonjour a tous

J'ai un problème avec la fonction Datelastemodified.
Je recherche dans un répertoire la date du plus récent fichier et la rammene dans une cellule excel. Jusque là tout va bien !!
Par contre cela ne donne pas toujours la bonne date
ex: si dans le rep il y a deux fichier avec les dates suivantes: 07/04/2010 et 15/03/2007; cela me rammene la date 15/03/2007 et pas 07/04/2010 ????:confused:
Je pense que le systéme compare d'abord les jours, puis les mois, puis les années !! j'ai essayé avec le système "anglais" mais idem !!
Comment faire pour qu'il me rammene la bone date (la plus récente!) ??

Merci d'avance car je pédale dans le vide !!!


'recherche la date de la dernière fiche et la noter dans la colonne I
Sub RechDate()

Dim i, n As Long, Chemin, reponse As String, FS As FileSearch, FSO, fold, fich

Set FSO = CreateObject("Scripting.FileSystemObject")
reponse = InputBox("Commencer à partir de la ligne ??")
n = Range("A65536").End(xlUp).Row
If reponse < 8 Then reponse = 8
ActiveWorkbook.Save

For i = reponse To n
If Range("A" & i).Value = "" Then
Else
Chemin = "\\frhofps0\frho_shared\Srv Developpement\Fiches techniques PF\" & Range("A" & i).Hyperlinks(1).Address
Set fold = FSO.getfolder(Chemin)
Chemin = fold.Path
Set FS = Application.FileSearch
With FS
.NewSearch
.LookIn = Chemin
.Filename = Range("A" & i).Value & " "
.SearchSubFolders = False
If .Execute(msoSortByLastModified, msoSortOrderDescending) > 0 Then
Set fich = FSO.getfile(.FoundFiles(.FoundFiles.Count))
Range("I" & i).Value = CDate(fich.datelastmodified)
Else
Range("I" & i).Value = ""
End If
End With
End If
Range("A3").Value = n - i
Next i

Set fich = Nothing
Set fold = Nothing
Set FSO = Nothing
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : Pb avec Datelastmodified

Bonjour p.pat27,

et comme ça ?

Code:
Sub RechDate()

Dim i, n As Long, Chemin, reponse As String, FS As FileSearch, FSO, fold, fich

Set FSO = CreateObject("Scripting.FileSystemObject")
reponse = InputBox("Commencer à partir de la ligne ??")
n = Range("A65536").End(xlUp).Row
If reponse < 8 Then reponse = 8
ActiveWorkbook.Save

For i = reponse To n
If Range("A" & i).Value = "" Then
Else
Chemin = "\\frhofps0\frho_shared\Srv Developpement\Fiches techniques PF\" & Range("A" & i).Hyperlinks(1).Address
Set fold = FSO.getfolder(Chemin)
Chemin = fold.Path
Set FS = Application.FileSearch
With FS
.NewSearch
.LookIn = Chemin
.Filename = Range("A" & i).Value & " "
.SearchSubFolders = False
If .Execute(msoSortByLastModified, msoSortOrder[COLOR=red]Ascending[/COLOR]) > 0 Then
Set fich = FSO.getfile(.FoundFiles(.FoundFiles.Count))
Range("I" & i).Value = CDate(fich.datelastmodified)
Else
Range("I" & i).Value = ""
End If
End With
End If
Range("A3").Value = n - i
Next i

Set fich = Nothing
Set fold = Nothing
Set FSO = Nothing
End Sub

en plus ça ressemble à du code à moi... je me serais pas planté, par hasard ????
 

tototiti2008

XLDnaute Barbatruc
Re : Pb avec Datelastmodified

Re,

Oui, mais tu as modifié le code original

tu veux le fichier le plus récent ou le plus ancien ?
les fichiers à prendre en compte sont seulement ceux dont le nom commence par la référence en colonne A ?
 

p.pat27

XLDnaute Junior
Re : Pb avec Datelastmodified

Re

j'ai récupérer la partie recherche de date et adapté à mes besoins (1000 pardons).

Oui je veus récuperer la date du fichier WORD le plus récent dans le répertoire de la référence dont le nom est en colonne A. Tous les fichiers WORD commence par le nom de la référence suivi d'un espace et d'un tiret ( ex: K87008 - ) suivi ensuite d'une désignation propre à chaque référence.
Je pensais que l'erreur pouvait venir de "l'espace" (ET!! e retour;)) je l'ai donc supprimé, résultats idem.
J'ai essayé en changeant "descending" par "ascending" ==> toujours pareil.
J'ai donc pensé (eh oui ça m'arrive!) que cela pouvait venir du format de date et j'ai remarqué qu'il y avait un "tri" sur les jours (le 15 était pris en compte avant le 07). J'ai changer mon format dans windows en format anglais (aa/mm/jj) ==> toujours pareil.
Donc là je sèche !! :(
 

tototiti2008

XLDnaute Barbatruc
Re : Pb avec Datelastmodified

Bonjour,


adapté à mes besoins (1000 pardons)

Mais non, tu as le droit d'adapter à tes besoins mais mon code ressemblait à :

Code:
If .Execute(msoSortByLastModified, msoSortOrderDe[COLOR=black]scending[/COLOR]) > 0 Then
Set fich = FSO.getfile(.FoundFiles([COLOR=red]1[/COLOR]))

pourquoi cette modification ?

et si tu met :

Code:
.Filename = Range("A" & i).Value & " *.doc"
 
...
If .Execute(msoSortByLastModified, msoSortOrder[COLOR=red]Descending[/COLOR]) > 0 Then
Set fich = FSO.getfile(.FoundFiles([COLOR=red]1[/COLOR]))

ça donne quoi ?
 

p.pat27

XLDnaute Junior
Re : Pb avec Datelastmodified

Re

C'est pire en elevant le (.FoundFiles.count), car là il semble prendre en compte tous les types de fichier (il n'y a pas que du fichier word dans le répertoire). Il s'est arrêté sur le fichier du 6-10-2009 16:12 (voir impression ecran).
Avec le (.FoundFiles.count) il s'arrête sur le fichier du 15-03-2010 16:31
Mais jamais il prends en compte celui du 07-04-2010 16:54
 

Pièces jointes

  • ScreenShot098.jpg
    ScreenShot098.jpg
    25.2 KB · Affichages: 100

p.pat27

XLDnaute Junior
Re : Pb avec Datelastmodified

Re,
oui avec le "*.doc"
J'ai fait tous les combinaisons avec "Descending" ou "Ascending", ".FoundFiles.Count" ou "1" ; J'ai même fait un essai en virant le fichier .GIF, et toujours le même résultat, soit le 15-03-2010 soit le 16-10-2009 mais jamais le 07-04-2010.
Je deviens dingue ou quoi ??
 

p.pat27

XLDnaute Junior
Re : Pb avec Datelastmodified

Re Bjr

Je pense avoir identifié le problème!! le nom de chaque fichier contient à la fin la date (ex: K54712 - ...... - 10-04-10.doc) et le ".filename" de la macro prend en compte cette date,( d'ou le 15-03-09 avant le 07-04-10).
Il suffit donc de la supprimer !! Ce serait trop simple car j'ai besoin de cette date dans le nom de fichier (imposé par le boss du marketing!!).
Par contre je ne sais pas comment faire pour ne prendre en compte dans la reconnaissance des fichiers que la référence du produit (.Filename = Range("A" & i).Value & " ")
qui peut être en 7,8 ou 9 digit.
 

tototiti2008

XLDnaute Barbatruc
Re : Pb avec Datelastmodified

Bonjour p.pat27,

décidement, tout ça pour trouver le fichier le plus récent...

le ".filename" de la macro prend en compte cette date,( d'ou le 15-03-09 avant le 07-04-10)

oui mais on ne trie pas par Filename mais par DateLastModified... donc moi je ne comprend pas.

quand tu dis que tu veux le fichier le plus récent, c'est celui dont la date dans le nom de fichier est le plus récent ou c'est celui qui a une date de dernière modification la plus récente ?
 

p.pat27

XLDnaute Junior
Re : Pb avec Datelastmodified

Moi non plus je ne comprends pas !!! :confused: mais j'ai fait plusieurs essais, et en supprimant la date dans le nom de fichier et en la remplaçant par des n°
K57412 - ....- 1
K57412 - ....- 2
etc jusqu'a...- 5
la macro me ramene toujours le fichier qui à le plus grand chiffre à la fin.
J'en ai donc conclus qu'il y avait un tri sur le nom !!:D
Or comme je dois conserver toutes les évolutions des fichiers je suis obligé de les nommer différemment, c'est pourquoi j'avais mis la date dans le nom (c'est à la fois pratique)

Mais c'est bien la date de dernière modif que j'ai besoin de ramener

Merci
 

tototiti2008

XLDnaute Barbatruc
Re : Pb avec Datelastmodified

Bonjour,

le plus récent est à priori TOTO - 4 (19/04/2010 15:28:14), mais bon, chez moi c'est bien la date et heure de modif de toto - 4 qui apparait donc je ne sais pas.

en effet, il se peut que tu ais des paramètres régionaux bizarres qui prennent mal en compte les dates de modification, parce que là, moi, je ne vois plus...
 

Discussions similaires

Réponses
2
Affichages
303
Réponses
5
Affichages
244

Statistiques des forums

Discussions
312 493
Messages
2 088 959
Membres
103 990
dernier inscrit
lamiadebz