Dans les informations d'un fichier l'on retrouve la date de la création de
ce fichier ainsi que l'auteur et d'autre information .
J'aimerais savoir s' il est possible de changé la date de la création d'un
fichier sans être obligé de recollé toutes les pages de ce fichiers et de
l'enregistré sous un nouveau nom .
Tu adapteras ChangeDatesFichier() si tu ne veux que changer la Date de Création
(la routine change aussi la date de Modification).
Salutations,
Daniel M.
Daniel.M
Salut Mario,
De quel facon je dois faire pour adapter ce que vous me proposé
Ça le fait directement chez moi sans problème : ça change la DATE de création du fichier Excel (dans lequel la proc est mise) au 2 février 2001 à 12:10.
Quand tu exécutes le code, n'obtiens-tu pas le résultat désiré?
Je l'ai adapté pour moi en ne faisant que changer la date de création (pas la date de modification, ni celle du dernier accès).
'FS '=========================== Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _ (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _ ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, _ ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As Long) As Long
Private Declare Function SetFileTime Lib "kernel32" _ (ByVal hFile As Long, lpCreationTime As FILETIME, _ lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function GetFileTime Lib "kernel32" _ (ByVal hFile As Long, lpCreationTime As FILETIME, _ lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" _ (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CloseHandle Lib "kernel32" _ (ByVal hObject As Long) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" _ (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
Sub ChangeDateCreationFichier()
Dim DateCreation As Date
Dim i As Integer Dim hdle As Long Dim ftCreation As FILETIME, ftCreation2 As FILETIME, ftLocalCreation As FILETIME Dim ftModif As FILETIME, ftLocalModif As FILETIME Dim ftLastAcc As FILETIME Dim STCreation As SYSTEMTIME, STModif As SYSTEMTIME Dim LeFichier As String
'Ici, c'est pour le 5 février 2001 à 12:10, à adapter DateCreation = DateSerial(2001, 2, 5) + TimeSerial(12, 10, 0)
LeFichier = ThisWorkbook.FullName
With STCreation .wYear = Year(DateCreation) .wMonth = Month(DateCreation) .wDay = Day(DateCreation) .wDayOfWeek = Weekday(DateCreation) - 1 .wHour = Hour(DateCreation) .wMinute = Minute(DateCreation) .wSecond = Second(DateCreation) .wMilliseconds = 0 End With
' convert system time to local time SystemTimeToFileTime STCreation, ftLocalCreation
' convert local time to GMT LocalFileTimeToFileTime ftLocalCreation, ftCreation
' open the file to get the filehandle hdle = CreateFile(LeFichier, _ GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, _ OPEN_EXISTING, 0, 0)
' change date/time property of the file GetFileTime hdle, ftCreation2, ftModif, ftLastAcc SetFileTime hdle, ftCreation, ftModif, ftLastAcc
' close the handle CloseHandle hdle TestInfos
End Sub '=========================== Salutations,
Daniel M.
Salut Mario,
De quel facon je dois faire pour adapter ce que vous me proposé
Ça le fait directement chez moi sans problème : ça change la DATE de création du
fichier Excel (dans lequel la proc est mise) au 2 février 2001 à 12:10.
Quand tu exécutes le code, n'obtiens-tu pas le résultat désiré?
Je l'ai adapté pour moi en ne faisant que changer la date de création (pas la
date de modification, ni celle du dernier accès).
'FS
'=========================== Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
Private Declare Function SetFileTime Lib "kernel32" _
(ByVal hFile As Long, lpCreationTime As FILETIME, _
lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function GetFileTime Lib "kernel32" _
(ByVal hFile As Long, lpCreationTime As FILETIME, _
lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" _
(lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" _
(lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
Sub ChangeDateCreationFichier()
Dim DateCreation As Date
Dim i As Integer
Dim hdle As Long
Dim ftCreation As FILETIME, ftCreation2 As FILETIME, ftLocalCreation As FILETIME
Dim ftModif As FILETIME, ftLocalModif As FILETIME
Dim ftLastAcc As FILETIME
Dim STCreation As SYSTEMTIME, STModif As SYSTEMTIME
Dim LeFichier As String
'Ici, c'est pour le 5 février 2001 à 12:10, à adapter
DateCreation = DateSerial(2001, 2, 5) + TimeSerial(12, 10, 0)
LeFichier = ThisWorkbook.FullName
With STCreation
.wYear = Year(DateCreation)
.wMonth = Month(DateCreation)
.wDay = Day(DateCreation)
.wDayOfWeek = Weekday(DateCreation) - 1
.wHour = Hour(DateCreation)
.wMinute = Minute(DateCreation)
.wSecond = Second(DateCreation)
.wMilliseconds = 0
End With
' convert system time to local time
SystemTimeToFileTime STCreation, ftLocalCreation
' convert local time to GMT
LocalFileTimeToFileTime ftLocalCreation, ftCreation
' open the file to get the filehandle
hdle = CreateFile(LeFichier, _
GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, _
OPEN_EXISTING, 0, 0)
' change date/time property of the file
GetFileTime hdle, ftCreation2, ftModif, ftLastAcc
SetFileTime hdle, ftCreation, ftModif, ftLastAcc
De quel facon je dois faire pour adapter ce que vous me proposé
Ça le fait directement chez moi sans problème : ça change la DATE de création du fichier Excel (dans lequel la proc est mise) au 2 février 2001 à 12:10.
Quand tu exécutes le code, n'obtiens-tu pas le résultat désiré?
Je l'ai adapté pour moi en ne faisant que changer la date de création (pas la date de modification, ni celle du dernier accès).
'FS '=========================== Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _ (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _ ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, _ ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As Long) As Long
Private Declare Function SetFileTime Lib "kernel32" _ (ByVal hFile As Long, lpCreationTime As FILETIME, _ lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function GetFileTime Lib "kernel32" _ (ByVal hFile As Long, lpCreationTime As FILETIME, _ lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" _ (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CloseHandle Lib "kernel32" _ (ByVal hObject As Long) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" _ (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
Sub ChangeDateCreationFichier()
Dim DateCreation As Date
Dim i As Integer Dim hdle As Long Dim ftCreation As FILETIME, ftCreation2 As FILETIME, ftLocalCreation As FILETIME Dim ftModif As FILETIME, ftLocalModif As FILETIME Dim ftLastAcc As FILETIME Dim STCreation As SYSTEMTIME, STModif As SYSTEMTIME Dim LeFichier As String
'Ici, c'est pour le 5 février 2001 à 12:10, à adapter DateCreation = DateSerial(2001, 2, 5) + TimeSerial(12, 10, 0)
LeFichier = ThisWorkbook.FullName
With STCreation .wYear = Year(DateCreation) .wMonth = Month(DateCreation) .wDay = Day(DateCreation) .wDayOfWeek = Weekday(DateCreation) - 1 .wHour = Hour(DateCreation) .wMinute = Minute(DateCreation) .wSecond = Second(DateCreation) .wMilliseconds = 0 End With
' convert system time to local time SystemTimeToFileTime STCreation, ftLocalCreation
' convert local time to GMT LocalFileTimeToFileTime ftLocalCreation, ftCreation
' open the file to get the filehandle hdle = CreateFile(LeFichier, _ GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, _ OPEN_EXISTING, 0, 0)
' change date/time property of the file GetFileTime hdle, ftCreation2, ftModif, ftLastAcc SetFileTime hdle, ftCreation, ftModif, ftLastAcc