Si vous regardez les propriétés stockées avec un classeur, vous remarquerez qu’Excel conserve pas mal d’informations concernant le fichier. L’un des éléments est une date et une heure qui sont simplement notées «Modifiées». Beaucoup de gens appellent cela la date de «dernière modification», mais cela reflète vraiment la dernière fois que le classeur a été enregistré.

Si vous souhaitez utiliser cette date dans votre classeur (peut-être dans un en-tête ou un pied de page), vous pouvez le faire en utilisant la propriété BuiltinDocumentProperties (qui semble presque redondante). La macro suivante ajoutera la date appropriée à l’en-tête de votre document:

Sub MyHeader1()

Dim sLMD As String

On Error Resume Next

sLMD = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")

If Err = 440 Then         Err = 0         sLMD = "Not Set"

End If     sLMD = Left(sLMD, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Saved: " & sLMD End Sub

Il y a un certain nombre d’éléments à noter dans cette macro. Tout d’abord, il tente de déterminer la dernière date à laquelle le classeur a été enregistré. Si ces informations ne peuvent pas être déterminées, il définit l’en-tête sur «Non défini».

Notez qu’une gestion des erreurs est effectuée dans cette macro. La raison en est qu’Excel renverra une erreur si une propriété de document particulière (BuiltinDocumentProperties dans ce cas) n’est pas définie. L’erreur doit être interceptée et traitée, ce qui est fait ici.

Il y a un autre élément à noter ici. Dans certaines versions d’Excel, la valeur Err renvoyée si la propriété n’est pas définie n’est pas vraiment 440 (comme illustré ici), mais un autre nombre impair, tel que -2147467259. C’est vraiment très bizarre. Pourquoi la valeur 440 (qui est le bon code d’erreur)

serait retourné dans une circonstance et pas dans une autre, je ne sais pas.

(Peut-être qu’un autre gourou d’Excel connaîtra la réponse.) Si vous rencontrez ce problème, vous pouvez adopter deux approches. Tout d’abord, vous pouvez remplacer la valeur 440 par l’autre valeur (-2147467259). La deuxième option, en supposant que vous avez déjà enregistré le classeur au moins une fois, consiste à utiliser une macro différente. Ce qui suit lit l’attribut « last modified » du fichier lui-même et stocke cette information dans l’en-tête:

Sub MyHeader2()

Dim fs As Variant     Dim f As Variant     Dim sLMD As String

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFile(ActiveWorkbook.Path & "\" & _       ActiveWorkbook.Name)

sLMD = Left(f.DateLastModified, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Modified: " & sLMD End Sub

Quelle que soit la macro que vous utilisez, n’oubliez pas que la macro, une fois exécutée, définira l’en-tête gauche sur les informations souhaitées. Ces informations ne changeront pas à nouveau tant que vous n’exécuterez pas à nouveau la macro. Ainsi, si vous voulez toujours une date à jour dans l’en-tête, vous devez exécuter la macro périodiquement (peut-être juste avant l’impression) ou la configurer pour qu’elle s’exécute chaque fois que vous ouvrez votre document.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (7764) s’applique à Microsoft Excel 2007, 2010 et 2013. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Displaying_the_Last_Modified_Date [Affichage de la date de" dernière modification "].