Mouchard fichier

bonjour.

je souhaiterais mettre dans un fichier excel déposé une sorte de mouchard. je m'explique,je voudrais indoqué a chaque fois qu'une personne ouvre le fichier et combien de temps le fichier est ouvert.

je sais même pas si c'est possible

cordialement

Hello,

C’est possible à partir du moment où l’utilisateur a activé les macros.

Niveau RGPD c’est pas fou de traquer les utilisateurs comme ça.

J’appelle ça plutot une trace d’audit mais il faut en informer les utilisateurs.

J’ai mis ça en place dans certains de mes fichiers au taff ça fait le job.

À mettre dans l’éditeur VBA dans le module « ThisWorkbook »

Dim ouvertureTime As Date

Private Sub Workbook_Open()
    ouvertureTime = Now
    Call LogOuverture
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call LogFermeture
End Sub

Puis dans un module à part

Sub LogOuverture()
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = ThisWorkbook.Sheets("Logs")
    If ws Is Nothing Then
        Set ws = ThisWorkbook.Sheets.Add
        ws.Name = "Logs"
        ws.Visible = xlSheetVeryHidden
        ws.Range("A1:D1").Value = Array("Date", "Utilisateur", "Action", "Durée (min)")
    End If
    On Error GoTo 0

    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1

    ws.Cells(lastRow, 1).Value = Now
    ws.Cells(lastRow, 2).Value = Environ("Username")
    ws.Cells(lastRow, 3).Value = "Ouverture"
    ws.Cells(lastRow, 4).Value = "" ' vide pour l’instant
End Sub

Sub LogFermeture()
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = ThisWorkbook.Sheets("Logs")
    If ws Is Nothing Then Exit Sub

    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1

    Dim dureeMinutes As Double
    dureeMinutes = DateDiff("s", ouvertureTime, Now) / 60

    ws.Cells(lastRow, 1).Value = Now
    ws.Cells(lastRow, 2).Value = Environ("Username")
    ws.Cells(lastRow, 3).Value = "Fermeture"
    ws.Cells(lastRow, 4).Value = Round(dureeMinutes, 1)
End Sub

N’hésite pas si besoin

@+

Bonsoir,
BAROUTE78 bonsoir,

ci dessous une nouvelle proposition avec le fichier mouchard à l'extérieur du fichier Excel :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim numFich As Integer, S(0 To nbHisto) As String, I As Long
    Dim nomFich
    nomFich = "LE_CHEMIN_DU_FICHIER_MOUCHARD\Modifier_par.txt"
    numFich = FreeFile
    Open nomFich For Input Lock Read Write As #numFich
    While Not EOF(numFich)
        I = I + 1
        Line Input #numFich, S(I)
    Wend
    Close #numFich
    S(1) = S(1) & ", fermé à " & Time
    numFich = FreeFile
    Open nomFich For Output Lock Read Write As #numFich
    S(0) = Application.UserName & ", le " & Now
    For I = 1 To Application.Min(nbHisto - 1, I)
        Print #numFich, S(I)
    Next I
    Close #numFich
End Sub

Private Sub Workbook_Open()
    Dim numFich As Integer, S(0 To nbHisto) As String, I As Long
    Dim nomFich
    nomFich = "LE_CHEMIN_DU_FICHIER_MOUCHARD\Modifier_par.txt"
    If Dir(nomFich) = "" Then
        ' création du fichier histo.txt
        numFich = FreeFile
        Open nomFich For Output As #numFich
        Close #numFich
    End If
    numFich = FreeFile
    If ThisWorkbook.ReadOnly Then
        ' ouverture xls en lecture seule
        Open nomFich For Input Lock Read Write As #numFich
        Line Input #numFich, S(0)
        Close #numFich
    Else
        ' ouverture xls en écriture
        Open nomFich For Input Lock Read Write As #numFich
        While Not EOF(numFich)
            I = I + 1
            Line Input #numFich, S(I)
        Wend
        Close #numFich
        numFich = FreeFile
        Open nomFich For Output Lock Read Write As #numFich
        S(0) = Application.UserName & ", le " & Now
        For I = 0 To Application.Min(nbHisto - 1, I)
            Print #numFich, S(I)
        Next I
        Close #numFich
    End If
End Sub

Et dans un module standard :

Public Const nbHisto As Integer = 10 ' historisation des 10 dernières ouvertures avec modifications enregistrées

Ceci permet de savoir qui a ouvert le fichier en dernier en cas de crash... Je l'ai également mis en place, mais rien de bien méchant...
je m'en sert également pour la mise en mémoire sur un réseau des score du jeu ArkaLouReeD et ArkaLouReeD Light !

Mais il faut également mettre en place une vérification de la mise en marche des macros.

Pas de gestion de fichier existant donc il vous faut un fichier :

13modifier-par.txt (153.00 Octets)

@ bientôt

LouReeD

Rechercher des sujets similaires à "mouchard fichier"