VBA Excel: Tracer systématiqumt les ouvertures et modif
Résolu/Fermé
Anne
-
25 sept. 2014 à 11:14
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 sept. 2014 à 16:25
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 sept. 2014 à 16:25
A voir également:
- VBA Excel: Tracer systématiqumt les ouvertures et modif
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
25 sept. 2014 à 12:05
25 sept. 2014 à 12:05
Voici une façon de faire :
Dans le module Thisworkbook de ce classeur, insérez ces trois codes :
Penser à adapter le chemin et le nom du fichier texte que vous voulez créer. Inutile de le créer, cela le fera automatiquement à la première utilisation.
Pensez à nettoyer de temps en temps votre fichier txt, sinon il risque d'être vite très gros...
Dans le module Thisworkbook de ce classeur, insérez ces trois codes :
Penser à adapter le chemin et le nom du fichier texte que vous voulez créer. Inutile de le créer, cela le fera automatiquement à la première utilisation.
Private Sub Workbook_Open() Dim num As Integer, FichierTXT As String Dim Qui As String, Quand As Date FichierTXT = "N:\Franck\QuiYaTouche.txt" 'A ADAPTER Qui = Environ("username") Quand = Format(Now, "dd/mm/yyyy hh:mm:ss") num = FreeFile Open FichierTXT For Append As #num Print #1, "Ouverture du fichier par : " & Qui & " le : " & Quand Close #num End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim num As Integer, FichierTXT As String FichierTXT = "N:\Franck\QuiYaTouche.txt" 'A ADAPTER num = FreeFile Open FichierTXT For Append As #num Print #1, "Modifications de : " & Sh.Name & " cellule : " & Target.Address & " le : " & Format(Now, "dd/mm/yyyy hh:mm:ss") Close #num End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim num As Integer, FichierTXT As String Dim Qui As String, Quand As Date FichierTXT = "N:\Franck\QuiYaTouche.txt" 'A ADAPTER Qui = Environ("username") Quand = Format(Now, "dd/mm/yyyy hh:mm:ss") num = FreeFile Open FichierTXT For Append As #num Print #1, "Fermeture du fichier par : " & Qui & " le : " & Quand Close #num End Sub
Pensez à nettoyer de temps en temps votre fichier txt, sinon il risque d'être vite très gros...
Bonjour,
Voici un code permettant de tracer et horodater dans le même classeur les modifications faites, à copier dans le module de chaque feuille concernée après avoir ajouté une feuille "Log":
Compte tenu de la problématique exposée, sans doute faudrait-il cacher la feuille afin qu'elle n'apparaisse pas lorsque d'autres utilisateurs ouvrent le classeur.
Bon courage!
Voici un code permettant de tracer et horodater dans le même classeur les modifications faites, à copier dans le module de chaque feuille concernée après avoir ajouté une feuille "Log":
Dim PreviousValue
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value <> PreviousValue Then
Sheets("log").Cells(100000, 1).End(xlUp).Offset(1, 0).Value = _
Application.UserName & " a modifie la cellule " & Target.Address _
& " de " & PreviousValue & " en " & Target.Value & " a: " & Format(Time, "hh:mm:ss") & " le: " & Format(Date, "dd/mm/yy")
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
PreviousValue = Target.Value
End Sub
Compte tenu de la problématique exposée, sans doute faudrait-il cacher la feuille afin qu'elle n'apparaisse pas lorsque d'autres utilisateurs ouvrent le classeur.
Bon courage!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
25 sept. 2014 à 11:32
25 sept. 2014 à 11:32
Bonjour,
Par macro événementielle, à l'ouverture du fichier, il n'est pas très difficile d'enregistrer, dans un fichier texte, le nom d'utilisateur, la date et l'heure.
Cela le devient davantage lorsqu'il s'agit de traquer toutes les modifications...
Pouvez vous nous en dire davantage?
But de cette manoeuvre?
Intérêt?
Combien de manipulations sont amenées à faire les utilisateurs de ce fichier à chaque utilisation?
Combien de feuilles sont concernées?
Par macro événementielle, à l'ouverture du fichier, il n'est pas très difficile d'enregistrer, dans un fichier texte, le nom d'utilisateur, la date et l'heure.
Cela le devient davantage lorsqu'il s'agit de traquer toutes les modifications...
Pouvez vous nous en dire davantage?
But de cette manoeuvre?
Intérêt?
Combien de manipulations sont amenées à faire les utilisateurs de ce fichier à chaque utilisation?
Combien de feuilles sont concernées?
Bonjour Pijaku et merci de répondre à ma demande,
J'ai constaté que l'un de mes classeur Excel comprenant 8 feuilles avait été modifié sans que l'on m'ait consulté et aimerais désormais savoir qui l'ouvre, quand et ce qui est modifié. J'ignore donc le nombre de manipulations que sont amenés à faire les utilisateurs.
Merci encore
J'ai constaté que l'un de mes classeur Excel comprenant 8 feuilles avait été modifié sans que l'on m'ait consulté et aimerais désormais savoir qui l'ouvre, quand et ce qui est modifié. J'ignore donc le nombre de manipulations que sont amenés à faire les utilisateurs.
Merci encore
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
25 sept. 2014 à 16:11
25 sept. 2014 à 16:11
Bonjour,
Voici le code d'Abdel corrigé , il y avait un bug:
remplace 100000 par 65000
Voici le code d'Abdel corrigé , il y avait un bug:
remplace 100000 par 65000
Dim PreviousValue Private Sub Worksheet_Change(ByVal Target As Range) If Target.Value <> PreviousValue Then Sheets("log").Cells(65000, 1).End(xlUp).Offset(1, 0).Value = _ Application.UserName & " a modifie la cellule " & Target.Address _ & " de " & PreviousValue & " en " & Target.Value & " a: " & Format(Time, "hh:mm:ss") & " le: " & Format(Date, "dd/mm/yy") End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) PreviousValue = Target.Value End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
25 sept. 2014 à 16:16
25 sept. 2014 à 16:16
Salut Le Pivert,
Juste pour info, j'abandonne le suivi de ce sujet.
Motif Anne et Abdel : même IP...
Donc...
Soit elle (Anne) s'est faite captée par son collègue (Abdel) et donc je les laisse se débrouiller...
Soit il s'agit d'un exercice et... on en a assez fait!
Soit il s'agit de la même personne qui nous prend donc pour des jambons.
...Fin du suivi
@+
Juste pour info, j'abandonne le suivi de ce sujet.
Motif Anne et Abdel : même IP...
Donc...
Soit elle (Anne) s'est faite captée par son collègue (Abdel) et donc je les laisse se débrouiller...
Soit il s'agit d'un exercice et... on en a assez fait!
Soit il s'agit de la même personne qui nous prend donc pour des jambons.
...Fin du suivi
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
25 sept. 2014 à 16:25
25 sept. 2014 à 16:25
Salut pijaku,
Ok, pour info ton code fonctionne très bien. Je me suis intéressé au code d'Abdel, j'ai trouvé le même en allemand avec la bonne syntaxe.
Ok, pour info ton code fonctionne très bien. Je me suis intéressé au code d'Abdel, j'ai trouvé le même en allemand avec la bonne syntaxe.
25 sept. 2014 à 14:22
Après adaptation et un premier essai de la macro il semblerait que ça ne convienne pas tout à fait car le fichier txt ne se complète que lorsque l'on lance la macro. Autrement dit si un autre utilisateur ouvre le fichier mais ne lance pas la macro, il n'apparaîtra pas dans le txt.
De plus, le fichier txt indique la date et l'heure du lancement de la macro et non d'ouverture réelle du fichier.
Vous faites le même constat?
25 sept. 2014 à 14:57
Sinon, non je retrouve toutes les infos... Entre la date d'ouverture et la date de lancement, ne s'écoule pas 1 seconde, on peut donc considérer qu'elles sont égales non???
25 sept. 2014 à 15:31
Modifié par pijaku le 25/09/2014 à 16:04
25 sept. 2014 à 16:06
Et tout placer dans le module ThisWorkbook???
Exemple : https://www.cjoint.com/c/DIzqjCOqBl0
N'oublie pas également d'adapter le chemin d'accès au fichier txt