Code VBA pour espions

bonjour à tous,

je desirerai mettre en place des "espions" dans mes fichiers excel pour connaitre les utilisateurs avec date et heures de visite de mes fichiers. pour etre plus claire, j'ai fait pas mal de fichiers pour l'entreprise ou je travaille et parfois certains "bidouille" et comme par hazard ce n'est jamais personne , d'ou l'utilité de mettre des espions dans mes fichiers.

dans nos services, il faut se connecter a un reseau, avec log et passe, dans les fichiers créés, il apparait dans les macros le numeros de compte de l'utilisateur. je penses que cela doit etre possible de recuperer une partie de ces infos.

merci de votre aide

Bonjour,

Une idée à creuser.

Tu pourrais faire en sorte de savoir qui a ouvert le classeur. A l'ouverture on déclenche un code qui te met des infos dans une feuille cachée et on enregistre le classeur.

On pourrait aussi mettre les infos à la fermeture mais si l'utilisateur décide de ne pas enregistrer ce qu'il a fait, tu n'auras pas d'infos.

A te relire avant de te poster le code

salut Dan, merci pour ta participation, les fichiers pro utilisé que j'ai créé, sont obligatoirement enregistré aprés utilisation. de ce fait avec ton idée de code sur une page cachée pour avoir un historique me plait enormement.

a bientot te lire

Cdt

Didier

Re

Si le fichier est obligatoirement enregistré, on peut donc mettre un code qui enregistre l'ouverture du fichier et le nom de celui qui l'a ouvert.

Cela suppose évidemment que le code VBA n'est pas accessible. Est-ce bien le cas ?

Si oui, cela devient assez simple dans le sens où seul toi aura accès au code VBA et seul toi pourra visualiser cette feuille

Crdlt

bonjour Dan,

dans mon milieu pro je suis l'un des trop rare a se pencher sur le fonctionnement d'excel donc meme si le code reste accessible quasi personne ne pourrais y avoir accés faute de "connaissance", dou les mauvaises manip et erreurs des "neophites" lol.

je compte me servir du code espion justement pour reperer les maillons faible et leur expliquer le fonctionnement des fichiers.

comme cela je pourrais savoir qui fait des erreurs et qui mets ces doigts la ou il faut pas.

Cdt

Didier

Re

Dans ton fichier, crée un onglet que tu nommes par exemple ADMIN ou autre

Va ensuite dans VBA project et donne le moi le nom de l'objet associé à cette feuille. Tu verras en principe Feuil1(nom de l'onglet) ou Feuil2(nom de l'onglet).....

Cordialement

Edit : Au fait sur quelle version excel fonctionnent les fichiers en question ??

re

donc la feuille Admin se nomme Feuil8 (Admin) en VBA project

au boulot tout fonctionne en Excel 2003.

je penses que je pourrai adapter ceci sur mes autres fichiers ensuite il y aura juste la page a regler dans VBAproject je penses

merci à toi

Didier

Re

sous excel 2003, tu as une fonction Suivi de modification que l'on peut activer dans le cas de classeur partagé. Cela te permet de voir aussi ce que l'on a modifié

Sinon essaie en mettant code dans THISWORKBOOK

'Macro Dan le 05/03/15

Private Sub Workbook_Open()
Dim dlg As Integer
On Error Resume Next
With Feuil1
dlg = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A" & dlg + 1).Value = "Dernière Modification le : " & _
    Format(ThisWorkbook.BuiltinDocumentProperties("Last Save Time"), "DD/MM/YY hh:mm")
    .Range("B" & dlg + 1).Value = "Par : " & _
    Format(ThisWorkbook.BuiltinDocumentProperties("Last Author"))
End With
ThisWorkbook.Save
End Sub

A l'ouverture il te mettra le nom de la personne qui a modifié le fichier. Aussi valable pour toi...

Le fichier sera aussi enregistré automatiquement à l'ouverture...

Il ne te reste plus qu'à cacher la feuille Admin. Attention de le faire via VBA et pas par le menu d'Excel. Car là elle n'est jamais complètement cachée

Cordialement

Mais il est possible de le faire sans enregistrer des données dans tes fichiers Excel. Car je ne suis pas sûr que savegarder un fichier juste pour faire le log soit une bonne idée...

Tu peux, par contre créer un fichier texte et stocker les infos là. A l'aide de la fonction Environ() par exemple. Il y a une variable "USERNAME"... Si tu veux, voici ce qu'il te faudra:

pour inscrire les infos dans un fichier log

Pour créer un nouveau log:

Public Function SaveStringAsTextFile(FilePath As String, FileContent As String)

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = FSO.CreateTextFile(FilePath)
oFile.WriteLine FileContent
oFile.Close
Set FSO = Nothing
Set oFile = Nothing

End Function

pour ajouter des infos au log existant:

Public Function GeneralAppendToTxtFile(NewRecord As String, FileName As String)

Dim oFSO As FileSystemObject
Set oFSO = New FileSystemObject
Dim oFS As TextStream
Set oFS = oFSO.OpenTextFile(FileName, ForAppending)
oFS.WriteLine NewRecord

oFS.Close
Set oFS = Nothing
Set oFSO = Nothing
End Function

Et voilà...

C'est ainsi que je log tout dans mes applications... Et cela marche à merveille

Merci beaucoup Dan, merci excel-malin

Je test et je vous tient au courant

cdt

Didier

Merci Beaucoup Dan, cela fonctionne impeccable, Merci aussi a Excel-Malin je vais apprendre a faire cela sur mes autres fichiers

milles merci

Didier

Rechercher des sujets similaires à "code vba espions"