Voir qui ouvre le fichier (log)

Marc37 -  
 Marc37 -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  3. Patrick
     
    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
  4. Marc37
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  7. Marc37
     
    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