Modifier la date de création d'un classeur

michel_m

XLDnaute Accro
Bonjour à tous,

Je cherche à modifier la date de création d’un classeur.

J’ai utilisé la propriété « builtindocumentproperties » cela marche uniquement avec l’outil « affichage-propriétés » lorsque je demande l’ouverture à partir d’Excel.
Les commandes fichiers-propriétés, que se soit dans Excel ou Windows, ne prennent pas en compte la modif.

J’ai donc cherché dans MSDN et sites divers une API ou une procédure WMI ou WSH ou… mais je n’ai pas trouvé .

Si quelqu’un pouvait me fournir une piste ou même une solution PAC (Prêt A Cuire), je lui serais reconnaissant jusqu’à la retraite !

Merci d’avance

Michel_M
 

MichelXld

XLDnaute Barbatruc
Re : Modifier la date de création d'un classeur

bonjour cher Michel

Cette solution proposée par Richie Simonetti le 05/27/2002 01:14PM est facilement adaptable en VBA Excel (testé avec Excel2002)

Visual Basic: Change file date and time stamp. Question 20305077


Code:
Private 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 Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2

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 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 Test()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'KPDTeam@Allapi.net
    Dim m_Date As Date, lngHandle As Long
    Dim udtFileTime As FILETIME
    Dim udtLocalTime As FILETIME
    Dim udtSystemTime As SYSTEMTIME
    Dim Fichier As String
    
    Fichier = _
    "C:\Documents and Settings\michel\dossier\general\excel\test.xls"
    m_Date = Format(Now, "DD-MM-YY")

    udtSystemTime.wYear = Year(m_Date)
    udtSystemTime.wMonth = Month(m_Date)
    udtSystemTime.wDay = Day(m_Date)
    udtSystemTime.wDayOfWeek = Weekday(m_Date) - 1
    udtSystemTime.wHour = Hour(m_Date)
    udtSystemTime.wSecond = Second(m_Date)
    udtSystemTime.wMilliseconds = 0

    ' convert system time to local time
    SystemTimeToFileTime udtSystemTime, udtLocalTime
    ' convert local time to GMT
    LocalFileTimeToFileTime udtLocalTime, udtFileTime
    ' open the file to get the filehandle
    
    lngHandle = CreateFile(Fichier, GENERIC_WRITE, _
    FILE_SHARE_READ Or FILE_SHARE_WRITE, _
    ByVal 0&, OPEN_EXISTING, 0, 0)
    ' change date/time property of the file
    SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime
    ' close the handle
    CloseHandle lngHandle
End Sub


bon week end
Ce lien n'existe plus
 
Dernière édition:

michel_m

XLDnaute Accro
Re : Modifier la date de création d'un classeur

Mon cher Michel,

Content de te retrouver sur le nouveau forum.

Merci, c'est super et presque du PAC ! il ya juste à rajouter, entre autres babioles, une ligne pour insérer builtindocumentproperties pour l'ouverture avec Excel.

Cette macro est impressionnante et c'est vrai que je ne pense jamais à des création de variables avec "type".Quant aux API, ca reste du mystère pour trouver celle(s) qu'il faut.

Encore une fois, Merci

Amitiés
Michel_M
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi