Être prévenu lors de la modification d'un fichier

zelgrif

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous pour savoir s'il existe un moyen qu'Excel prévienne un utilisateur X ou Y dès lors qu'un document, qui se trouve sur un disque partagé, a été modifié ?
Ou un éventuel logiciel qui pourrait gérer tel ou tel fichier Excel et préviendrait de sa modification.

Merci d'avance si un moyen existe.

Olivier
 

Shock

XLDnaute Occasionnel
Re : Être prévenu lors de la modification d'un fichier

Bonjour,
je sais qu'on peut logguer dans un fichier texte les noms d'utilisateurs qui ont ouvert le fichier, avec un historique (je l'ai fait il y a longtemps).
Il faut mettre une macro dans le fichier que l'on veut suivre (dans le module "Private Sub Workbook_Open()" par exemple).
Ca te suffirait?
 

zelgrif

XLDnaute Nouveau
Re : Être prévenu lors de la modification d'un fichier

Le problème est qu'à part créer une macro en mode souris, je ne sais pas utiliser le VB, ni comment créer une macro par le mode éditeur.
S'il existe une macro simple à faire, et qu'on puisse me détailler le contenu et comment l'insérer dans un fichier je veux bien.
Sinon je trouverais une autre solution.
 

Shock

XLDnaute Occasionnel
Re : Être prévenu lors de la modification d'un fichier

Voilà déjà comment écrire dans un fichier texte (code tiré du Wiki de Michel XLD / la bible du VBA! ;) )
https://www.excel-downloads.com/thr...oter-dautres-applications-depuis-excel.92359/

Code:
'Ecrire la valeur de la cellule A1 dans une fichier texte , par l'instruction Append


'Remarques : Les données viennent s'inscrire à la suite des lignes existantes .Si le fichier .Txt n'existe pas , il sera créé automatiquement .
Sub excelVersFichierTexte()
Dim Cible As Integer
Cible = freeFile
Open "C:\Mes documents\michel excel\essai.txt" For Append As #Cible
Print #Cible, Range("A1") 'renvoie valeur cellule A1 dans fichier txt
Close #Cible
End Sub


'Ecrire la valeur de la cellule A1 dans une fichier texte , par l'instruction Output


'Remarques : Si le fichier existe , les anciennes données seront écrasées .Si le fichier .Txt n'existe pas , il sera créé automatiquement .
Sub excelVersFichierTexte_V02()
Dim Fichier As String
Fichier = "C:\Documents and Settings\michel\dossier\general\excel\Fichier.Txt"
Open Fichier For Output As #1
Print #1, Range("A1") 'renvoie la valeur cellule A1 dans le fichier txt
Close
End Sub

tu dois placer l'une des deux solutions dans un module.
Fais ALT+F11, pour ouvrir Visual Basic Editor, tu click droit sur "This Workbook", ->Code, Là tu sélèct. dans la liste de droite l'évènement "Open" Puis tu y places ton code (attention de bien enlever les Sub et End sub qui sont dans le code que j'ai joint).
Il faut adapter le chemin de fichier, puis que je retrouve comment récupérer un Login User aussi....sinon ce code ne te sert à rien...Je reviens! ;)
 

zelgrif

XLDnaute Nouveau
Re : Être prévenu lors de la modification d'un fichier

Shock à dit:
Là tu sélèct. dans la liste de droite l'évènement "Open" Puis tu y places ton code (attention de bien enlever les Sub et End sub qui sont dans le code que j'ai joint).

J'ai créé la page "code", mais la liste de droite avec l'évènement "open", je la vois nul part...
 

Shock

XLDnaute Occasionnel
Re : Être prévenu lors de la modification d'un fichier

Autant pour moi...
D'abord sélèctionne l'objet "Workbook" dans la liste de gauche (là où il est écrit (Général)), et ça te met directement dans l'évènement Open...
Ca te donne ça :
Code:
Private Sub Workbook_Open()

End Sub
 
Dernière édition:

michel_m

XLDnaute Accro
Re : Être prévenu lors de la modification d'un fichier

Bonjour tous,
Ci dessous et ci joint splendide démo de MichelXLD et @+thierry...

Installe taupe.xls ecris quelques trucs et regarde en racine le fichier spy.txt: tes modifications où, quoi, quand sont caftées..
Code:
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
' AUTEUR: MichelXLD adapté de :
'@+Thierry
'http://www.excel-downloads.com/html/French/forum/messages/1_74783_74783.htm
'
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
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:\Spy.txt" ' à adapter au réseau
 
Spy = _
Format(Now, "DD/MM/YYYY HH MM SS") & vbTab & _
"User Name : " & UserName & vbTab & _
Sh.Name & vbTab & Target.Address & vbTab & Target.Cells(1, 1)
Open ThePath For Append As #1
Print #1, Spy
Close
End Sub

A+
Michel_M
 
Dernière édition:

zelgrif

XLDnaute Nouveau
Re : Être prévenu lors de la modification d'un fichier

La macro me crée un fichier reprenant les données dans la cellule A1.
Mais après je ne vois pas comment ça peut faire apparaitre une liste d'utilisateurs qui ont utilisés le fichier...
C'est par une autre macro ? Une formule ?
 

zelgrif

XLDnaute Nouveau
Re : Être prévenu lors de la modification d'un fichier

Merci Michel,

Mais j'ai beau modifier 36 choses dans le fichier, j'ai aucun fichier texte à la racine du fichier qui se crée.
J'ai collé ton texte de macro dans un nouveau module, et ça ne fait rien du tout...

Mais bon, vu le novice que je suis, je ne dois pas faire les choses comme il faut...
Ne vous acharnez pas, il n'y a pas de solution simple on dirait, je m'en passerais.
 

michel_m

XLDnaute Accro
Re : Être prévenu lors de la modification d'un fichier

re,

Regarde dans taupe.xls (la pièce jointe de mon post), la macro est présente dans "thisworkbook" de l'éditeur VBE et non dans un module "classique"

Pour faire apparaitre l'explorateur de projets Ctrl+R où tu verras "thisworkbook"

N'hésites au cas où
Michel_M

PS: le fichier spy.txt est en racine du disque dur c:
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
364

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus