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é)