Tracer des accés a un fichier [Résolu]

Signaler
Messages postés
7
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
16 janvier 2008
-
Messages postés
7
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
16 janvier 2008
-
Bonjour tout le monde,

J'ai actuellement un problème à régler :

Je dois trouver un moyen (probablement en vba) de tracer les accés à un fichier excel et de logger les modifications et qui les font quelque part
Habituellement j'ai toujours une petite idée de comment faire ou je trouve toujours mon bonheur dans ce forum :D
Malheureusement pour le coup je sèche complètement ... :/

Avez vous un conseil à me donner, un bout de code déjà utilisé par qqun ou autre ?

Merci d'avance

Groquick94@hotmail.com

10 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Utilise l'événement Selection_Change() qui est accédé à chaque changement de position dans la feuille pour retracer la valeur originale.

Option Explicit

Dim Valeur As Variant
Dim Cellule As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Valeur = Target.Value  'valeur lors de la sélection de la cellule

    Set Cellule = Target

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox "La cellule  " & Target.AddressLocal(False, False) & vbCrLf & _
                  "a changé de " & Valeur & vbCrLf & _
                  "à           " & Target.Value
End Sub

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
7
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
16 janvier 2008

Avant de me faire envoyer bouler en disant : "active le suivi des modifications hey boulet!" :)
Celui ci ne me satisfait pas du tout du tout.

En effet :

Il ne stock pas le nom de connexion , ni ip ou autre
Il ne conserve l'historique que 30 jours
Une fois activé je n'ai plus accés aux macros ...
Il me fait l'effet d'une boite noire inconfigurable.

Si qqun sait comment le modifier, ok , mais comme j'en doute je viens sur le forum vba :)

Groquick94@hotmail.com
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
Tu peux essayer un truc du style :

Dans le Workbook_Open (ce qui fait que le code sera appelé à chaque ouverture du fichier), un bout de code qui va inscrire dans un fichier texte, à un emplacement pré-défini, les infos que tu trouves nécessaires (date et heure de connexion, ...)
Avec la fonction Environ (msgbox Environ("username") ), tu récupères le nom du user connecté sur le poste, après, je ne sais pas ou, l'adresse IP.

Inconvénient, il faut que l'utilisateur active la macro au lancement, et n'importe qui s'y connaissant un minimum est capable de contourner ou d'aller modifier ta log. Après, ça dépend de tes besoins, mais c'est une piste très simple à mettre en place.

Molenn
Messages postés
7
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
16 janvier 2008

Merci beaucoup.

Mais y'a t'il moyen de repérer les modifications effectuées (changement de celulles etc)?

Groquick94@hotmail.com
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Dans le code chaque feuille, il y a l'événement Worksheet_Change(Target...)
où Target est la cellule qui est modifiée.

Donc, à chaque changement, cet événement est appelé.
Si tu veux "tracker" tous les changements, tu vas ralentir passablement tous le processus du fichier, je pense... et ça rsique de te générer un gros fichier de suivi...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Selon la grosseur de ton fichier Excel, tu pourrais éventuellement appeler une procédure à la fermeture du fichier dans
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dans cette procédure, tu copies dans un fichier texte (ou autre) toutes les feuilles dont tu veux vérifier les modifications. Et tu nommes le fichier "log" avec la date et l'heure.

Si tu fais ça à toutes les fois que le programme se ferme, tu pourrais suivre les modifications d'une ouverture à l'autre... Ça risque d'être moins pénible à coder et aussi pour l'utilisateur du programme.

Une idée comme ça.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
7
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
16 janvier 2008

Je vais essayer de faire ca, je vous tient au courant

Groquick94@hotmail.com
Messages postés
7
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
16 janvier 2008

Bon je pense que la methode du WorksheetChange va me convenir très bien :)
Par contre  (ouuuuh le lourd), je n'arrive pas a récupérer l'ancienne valeur, juste la nouvelle valeur. Bon je ne suis pas sur d'en avoir reellement besoin mais ca serait un gros plus.

Groquick94@hotmail.com
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
La variable Cellule n'est finalement pas utilisée... Tu peux donc l'enlever si elle ne te sert pas...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
7
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
16 janvier 2008

Ca marche nickel, merci beaucoup

Groquick94@hotmail.com