Nombre d'ouverture ou accès à un fichier

  • Initiateur de la discussion Quentin91
  • Date de début
Q

Quentin91

Guest
Hello !

J'ai un tit problème et je pense que y'a bien quelqu'un pour trouver une solution parmi vous (car apparemment vous avez toujours une solution !)

Je souhaite savoir si un fichier partagé est utile (je me casse à faire des stats car on me l'a demandé mais je doute qu'elles servent !!!) . Il est en lecture seule pour les autres et en accès complet chez moi. Existe t'il un moyen de comptabiliser le nombre d'ouverture du fichier, voire même bien plus, à savoir qui ?

Merci d'avance de m'aider à sortir de ma naîveté !
 
E

Eric C

Guest
Re le Forum
Re Arnaud - Bonjour Thierry

Tu es toujours sur tous les posts. Possèdes-tu le don d'ubiquité ???
Je n'ai pas encore regardé ta version II mais je parie ça va être fumant - Déjà la première ...

@ ++ Eric C
 
E

Eric C

Guest
Re le Forum
Re Arnaud & Thierry

En fait, Arnaud, ta macro fonctionne. J'avais mal lu le post initial et pensais qu'avec un clic par ex sur la Cell A1, un MsgBox aparaissait, c'est pour cela que j'étais aux aguets de la formule magique. Je reste sur ma faim .

@ ++ Eric C
 
A

Arnaud

Guest
oula g du mal a comprendre la.......ce n'est pas ce que la macro fais ?? afficher un message quand on click sur une cellule ( par exemple A1 ) ?? chez moi c ce que cela fais ??? tu pensai a quoi ??? j'comprend pu rien la :)
 
A

AVORIAZ

Guest
superbe je chercher justement un system de trace de ce type, par contre moi j'ai un bug le vba se met en debogage a cette phrase

Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long

'Spy Opening/Closing @Thierry
Private Sub Workbook_Open()
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String, ThePath
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

ThePath = "I:\MC_DEV\Share\Spy.txt" ' à adapter au réseau

Spy = "Open on : " & vbTab & Format(Now, "DD/MM/YYYY HH:MM:SS") & _
vbTab & "User Name : " & vbTab & UserName

Open ThePath For Append As #1 ' c'est ici que le debogueur s'arrete .................
Print #1, Spy
Close

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String, ThePath
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

ThePath = "c:\poub\Spy.txt" ' à adapter au réseau

Spy = "Close on : " & vbTab & Format(Now, "DD/MM/YYYY HH:MM:SS") & _
vbTab & "User Name : " & vbTab & UserName

Open ThePath For Append As #1
Print #1, Spy
Close

End Sub

merci pour votre aide

avo
 
J

Jean-Marie

Guest
Bonjour

Ton problème doit venir de cette ligne
ThePath = "I:\MC_DEV\Share\Spy.txt" ' à adapter au réseau

As-tu définis le lecteur I, voir aussi les dossiers de l'arborescence MC_DEV\Share\

@+Jean-Marie
 
@

@+Thierry

Guest
Bonjour Jean Marie, Avoriaz, Eric, Quentin, Arnaud

Et oui, "I:\MC_DEV\Share\" est le chemin de mon server de developpement !!!

En fait le Txt "Spy" n'a pas besoin d'exister, il sera créé à la volé, mais le chemin adéquate oui ! et on as besoin d'un mapping vers "I" adéquate aussi... (ou alors indiquer le chemin complet vers le server)

Bon Week End
@+Thierry
 
A

AVORIAZ

Guest
salut thierry,

moi le chemin n'es pas un server , mais mon disque dur c:

donc j'ai creer ce rep c:spy.txt

mais toujours erreur de debogage,

en faite je cherche a save l'utilisateur et l'heure d'ouverture jour et date de consultation ...

pas facile pour moi qui debute en vba mais je suis content j'apprends plein de chose avec vous !!!

qq1 peut m'eclairer sur mon prob de debogage a la ligne de server i : .....
Private Sub Workbook_Open()
'
Sheets("Trace").Unprotect ("mdp")
a = Sheets("Trace").Cells.Find("*", [A1], , , 1, 2).Row + 1
Sheets("Trace").Range("A" & a).Value = Application.UserName
Sheets("Trace").Range("B" & a).Value = Date
Sheets("Trace").Protect ("mdp")

End Sub


Private Sub fichier()

' Via fichier
' il faut mettre ce code à la place du code de Private Sub Workbook_Open()

fichier = "C:\Temp\le_fichier.txt" ' le chemin du fichier

Log = Application.UserName ' logging
dat = Date

Open fichier For Append As #1
Print #1, Log, dat
Close #1

End Sub


ou j'avais trouver ce code aussi qui fonctionne mais il me manque l'heure !!
 
@

@+Thierry

Guest
Bonjour Avoriaz, Jean Marie, le Fil, le Forum

Bon, il y a plusieurs manières de faire un SPY. Ce que tu as trouvé et posté au dessus sont des variantes.

111) Faire un Tracker qui va écrire dans le Classeur lui même sur une feuille protégée ("Trace")


Si tu veux la date et l'heure il suffit de faire ceci :

Option Explicit
Sub SpyOnWorkSheet() '<<<à lancer depuis ThisWorkBook "Private Sub Workbook_Open()"
Dim L As Long

With Sheets("Trace")
.Unprotect "LeMotDePasse"
L = .Range("A65536").End(xlUp).Row + 1 '(je n'aime pas les [A1] !!! lol)
.Range("A" & L).Value = Application.UserName
.Range("B" & L).Value = Date
.Range("C" & L).Value = Format(Now, "HH:MM:SS")
.Visible = xlVeryHidden
.Protect "LeMotDePasse"
End With
End Sub

NB Ici une macro "ADMIN" qui te permettra d'avoir accès à cette feuille cachée et protégée :
Sub AdminSpyWorkSheet()
With Sheets("Trace")
.Unprotect "LeMotDePasse"
.Visible = True
End With
End Sub


222) Faire un Tracker sur un fichier TXT pour l'ouverture seule


Si tu veux la date et l'heure il suffit de faire ceci :

Sub SpyOnTxt() '<<<à lancer depuis ThisWorkBook "Private Sub Workbook_Open()"
Dim ThePath As String, Log As String, Dat As String, HMS As String
ThePath = "C:\TheSpy.txt"

Log = Application.UserName
Dat = Date
HMS = Format(Now, "HH:MM:SS")

Open ThePath For Append As #1
Print #1, Log, Dat, HMS
Close #1
End Sub


444) Faire un "Vrai" Tracker sur un fichier TXT qui va "tout" enregistrer à l'ouverture et la fermeture


Ceci est mon exemple plus haut adapté à tes besoins :

Option Explicit
Private Const ThePath As String = "C:\TheSpy.txt" ' <<<<<<<<<<<<< ADAPTATION POUR C:\ DIRECTE
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long

'Spy Opening/Closing @Thierry
Private Sub Workbook_Open()
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)


Spy = "Open on : " & vbTab & Format(Now, "DD/MM/YYYY HH:MM:SS") & _
vbTab & "Computer Log-In User Name : " & vbTab & UserName & vbTab & _
"Application User Name : " & vbTab & Application.UserName

Open ThePath For Append As #1
Print #1, Spy
Close
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

Spy = "Close on : " & vbTab & Format(Now, "DD/MM/YYYY HH:MM:SS") & _
vbTab & "Computer Log-In User Name : " & vbTab & UserName & vbTab & _
"Application User Name : " & vbTab & Application.UserName

Open ThePath For Append As #1
Print #1, Spy
Close
End Sub

PS on notera que cette dernière méthode enregistre le vrai "LOG-IN" de user avec un appel API, car "Application.UserName" peut être changé depuis les options générales d'excel très facilement...mais je l'ai ajouté aussi par rapport à ma version de base plus haut

Bon Dimanche avec "Excel Spy and VBA's Horror!!!" primé à Avoriaz !! lol
@+Thierry
 

Discussions similaires

Réponses
2
Affichages
290

Statistiques des forums

Discussions
312 294
Messages
2 086 928
Membres
103 404
dernier inscrit
sultan87