Enregistrer dans un journal toutes les ouvertures et fermetures d'un fichier Excel (VBA)


Très utile pour connaitre le taux d'utilisation d'un logiciel Excel utilisé par un groupe d'utilisateurs disposant d'une connexion vers un serveur commun, la macro enregistre dans un fichier texte (qui peut se trouver sur le serveur) toutes les ouvertures ou fermetures du logiciel, avec la date, l'heure et le nom de l'utilisateur.

La macro "journalise" qui enregistre ouvertures et fermetures est lancée par les procédures événementielles Workbook_Open et Workbook_BeforeClose :


Private Sub Workbook_BeforeClose(Cancel As Boolean)
journalise "fermeture"
End Sub

Private Sub Workbook_Open()
journalise "ouverture"
End Sub


Le fonctionnement de la macro journalise est très simple


Sub journalise(txt)
rep_journal = Sheets(1).Range("adr_rep")
If Right(rep_journal, 1) = "\" Then rep_journal = Left(rep_journal, Len(rep_journal) - 1)
On Error GoTo fin
If Dir(rep_journal, vbDirectory) = "" Then MkDir (rep_journal)
filnb = FreeFile
Open rep_journal & "\journal_" & Format(Now, "mmyy") & ".txt" For Append As #filnb
Print #filnb, Now & ", " & txt & ", " & Application.UserName
Close #filnb
fin:
On Error GoTo 0
End Sub


rep_journal est le répertoire dans lequel va se trouver le journal.
La macro se contente de créer le répertoire s'il n'existe pas (MkDir), puis d'ouvrir le fichier journal en "Appending" (écriture sans écraser le contenu du fichier) avec Open, puis d'y écrire une ligne contenant la date et l'heure (Now) et le nom de l'utilisateur (Application.UserName), avant de le refermer avec Close.

Cliquez ici pour télécharger le fichier exemple (.xls zippé)