Re,
Pour répondre à ta question.
- Aller dans l'environnement VBE avec Alt + F11
- Ajouter un module avec [Alt + I] et M
- Renommer ou pas le module (par défaut Module1)
- Copier et Coller le code que je t'ai donné je le remet
' // WriteLinesInTextFile By Jean-Paul (Valtrase) le : 10/12/2021
' // Ecrit dans un fichier log un message
Sub WriteLinesInTextFile(FileName As String, Line As String, Optional Replace As Boolean)
Dim Channel As Long
Dim Counter As Long
Channel = FreeFile
If Replace Then
Open FileName For Output As Channel
Else
Open FileName For Append As Channel
End If
Print #Channel, Line
Close Channel
End Sub
' // WriteLog By Jean-Paul (Valtrase) le : 10/12/2021
' // Formate un message pour l'ecriture dans un fichier log
Sub WriteLog(Message)
Dim sDate As String
Dim sFullPath As String
Dim Counter As Byte
Dim sEntete As String
sDate = Format(Now, "yyyy-mm-dd hh:nn:ss")
sFullPath = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".") - 1) & ".log"
sEntete = sDate & " | " & ThisWorkbook.Name & " | "
For Counter = LBound(Message) To UBound(Message)
WriteLinesInTextFile sFullPath, sEntete & Message(Counter), False
Next
End Sub
Maintenant dans la méthode de ThisWorkBook_Open tu peux mettre ce code :
Private Sub Workbook_Open()
WriteLog "Ouverture du classeur par : " & Environ("username")
End Sub
tu as la possibilité de mettre plusieurs lignes avec un Array
Voilà tu trouvera un fichier texte dans le répertoire du classeur intitulé NomDuClasseur.log
Tu peux automatiser l'ouverture du fichier avec un bouton et la commande ci-dessous par exemple
vba.Shell "C:\WINDOWS\NOTEPAD.EXE " & Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".") - 1) & ".log",vbNormalFocus