Voir qui ouvre le fichier (log)

Fermé
Marc37 - 12 août 2020 à 18:52
 Marc37 - 19 août 2020 à 09:16
Bonjour à tous !

Je sollicite votre aide car je transmets des informations via un fichier excel partagé sur un serveur et j'aimerai savoir qui les lit.

J'ai essayé plusieurs VBA trouvées sur internet mais sans succès... J'utilise excel 2016.

J'ai trouvé une macro qui fonctionnait plus ou moins, avec un fichier log qui s'enregistrait, mais cela fonctionnait que si l'utilisateur clique sur enregistrer en refermant, or la plupart du temps ce n'est pas le cas et le fichier est juste lu sans être modifié.
Donc j'aurais besoin de savoir quand et par qui a été ouvert le fichier, dans un onglet caché, ou un fichier log peu importe.

Merci par avance pour votre aide !


Configuration: Windows / Chrome 84.0.4147.125

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié le 13 août 2020 à 08:45
Bonjouur

indique qui a ouvert et fermé le classeur et quand (xl2000)
il est possible aussi -( autre macro)de connaitre la cellule éventuellement modifiée (adresse, ancienne et nouvelle valeur)

Option Explicit
'----------------------------------------
Const fichier As String = "D:\docus\bigbrother.txt" 'A ADAPTER AU CONTEXTE
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long


Private Sub Workbook_Open()
Dim lpBuff As String * 25
Dim retour As Long
Dim utilisateur As String, cafte As String

retour = GetUserName(lpBuff, 25)
utilisateur = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

cafte = "Ouvert à : " & Format(Now, "dd/mm/yyyy hh:mm:ss") & _
vbTab & "par : " & utilisateur

Open fichier For Append As #1
Print #1, cafte
Close

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lpBuff As String * 25
Dim retour As Long
Dim utilisateur As String, cafte As String

retour = GetUserName(lpBuff, 25)
utilisateur = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

cafte = "Fermé à : " & Format(Now, "dd/mm/yyyy hh:mm:ss") & _
vbTab & "par : " & utilisateur

Open fichier For Append As #1
Print #1, cafte
Close

End Sub



1
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
13 août 2020 à 08:02
Bonjour,

a mettre dans ThisWorkbook

Option Explicit
Private Sub Workbook_Open()
'affiche en A1 le nombre d'ouvertures
Range("A1") = Range("A1") + 1
'crée un fichier texte dans le même dossier que le classeur avec le nom, la date et l'heure
Open ThisWorkbook.Path & "\compteur.txt" For Append As #1
Print #1, Application.UserName, Now
Close #1
'sauvegarde avant qu'on ferme sans sauvegarde
ActiveWorkbook.Save
End Sub

0
bonjour,
j'avais un autre genre de problème, j'avais un fichier qui plantait mais je n'arrivais pas à savoir si c’était toujours la même personne ou un environnement ou une version d'Excel.
j'ai donc mis cela dans l'appli. Cela m’écrit un fichier TXT dans un répertoire du réseau (accessible à tous le monde) qui parait anodin et de toute façon, ce fichier ne contient rien de spéciale ou confidentiel. Tu peux même y ajouter l'heure si tu veux. Mais si cela est plus "secret" , rien ne t'interdit de t'amuser à le crypter...

Private Sub Workbook_Open()
' Pour écrire un fichier de suivit d'ouverture du fichier de pointage mensuel

Dim Usager As String, Machine As String, FichierMois As String, Repertoire As String
Dim NomFichier As String

Usager = Environ("USERNAME")
Machine = Environ("COMPUTERNAME")

FichierMois = ThisWorkbook.Name
Repertoire = "W:\Affaires\"
NomFichier = Repertoire & FichierMois & ".TXT"
On Error GoTo fin:
Open NomFichier For Append As #1
Write #1, "Usager : " & Usager & " " & "Ordi : " & Machine & " " & "Date : " & Now
Close #1

fin:
On Error GoTo 0
End Sub
0
Ok michel_m j'ai réussi à intégrer ce dernier qui marche super !

Par contre je viens de m'apercevoir qu'il faut enregistrer le fichier excel sous format xlsx pour qu'il accepte la macro, ce n'est pas un problème en soi, mais quand je l'ai ouvert pour la première fois il y avait une barre en haut avec un avertissement de sécurité pour activer les macros, si l'utilisateur ouvre le fichier mais ne l'active pas je risque de ne pas le voir si ?
Ou comment parer à cela ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié le 14 août 2020 à 09:04
Bonjour,

comme il s'agit de macro, il faut l’enregistrer sous la forme xlsm

as tu autorisé les macros sur ton ordi ?
Activer les macros:
rond office- -options Excel
1/standard
cocher " onglet développeur dans ruban "
2/gestion confidentialité- paramètres centre gestion-confidentialité
Activer toutes les macros


les 2 macros doivent être installées non dans un module, mais dans "thisworkbook"

autrement, je ne vois pas...


0
Oui moi j'ai activé la macro, mais admettons qu'un autre utilisateur ne l'active pas, le log ne fonctionnera donc pas si ?
0