Madax99
Messages postés7Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention16 janvier 2008
-
14 janv. 2008 à 14:58
Madax99
Messages postés7Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention16 janvier 2008
-
16 janv. 2008 à 11:28
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 ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 16 janv. 2008 à 11:17
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
Madax99
Messages postés7Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention16 janvier 2008 14 janv. 2008 à 15:19
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 :)
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 14 janv. 2008 à 16:39
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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 15 janv. 2008 à 22:49
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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 15 janv. 2008 à 22:56
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
Madax99
Messages postés7Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention16 janvier 2008 16 janv. 2008 à 09:14
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.