Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Historiser les OUvertures de Fichiers

  • Initiateur de la discussion Initiateur de la discussion piwa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

piwa

XLDnaute Occasionnel
Bjr,

J'ai trouvé sur cet excellent site et surtout vous contributeurs, le moyen d'historiser les ouvertures de fichiers.... il me manque juste une chose ... si jamais l'utilisateurs n'enregistre pas en sortant (donc ds la plupart des cas) je n'ai aucune trace de passage .....

PS : Hors de question de forcer l'enregistrement dans la macro ... les fichiers font parfois > 40Mo

Ci dessous le code (je remercie encore tous les contributeurs du forum) :

Private Sub Workbook_Open()
'
Sheets("Synthese").Select 'Aller sur feuille synthese pour eviter de voir la completude trace…
MsgBox "AVERTISSEMENT : Activer les macros IMPERATIVEMENT sinon les resultats seront erronés et/ou certaines fonctions seront impossibles. Donc si vous avez repondu NON , fermer le classeur et recommencer. Merci © 2006 PA"
Sheets("Trace").Unprotect ("mdp")
a = Sheets("Trace").Cells.Find("*", [A1], , , 1, 2).Row + 1
Sheets("Trace").Range("A" & a).Value = Application.UserName
Sheets("Trace").Range("B" & a).Value = Date
Sheets("Trace").Range("C" & a).Value = Now - Int(Now)
Sheets("Trace").Protect ("mdp")
Sheets("Synthese").Select 'Aller sur feuille synthese

End Sub

J'ai trouver le code suivant mais je n'arrive pas à la faire fonctionner, qui pourrait palier au probleme .... un fichier externe d'historisation :

Le code :
Private Sub fichier()

' Via fichier
' il faut mettre ce code à la place du code de Private Sub Workbook_Open()

fichier = "C:\Temp\le_fichier.txt" ' le chemin du fichier

Log = Application.UserName ' logging
dat = Date

Open fichier For Append As #1
Print #1, Log, dat
Close #1

End Sub


Merci de votre aide..
 
Re : Historiser les OUvertures de Fichiers

bonjour

Peux tu préciser ce qui ne fonctionne pas ?

Code:
Private Sub Workbook_Open()
    Dim Fichier As String
    Dim L As String
    Dim D As Date
    
    Fichier = "C:\Temp\le_fichier.txt" ' le chemin du fichier
    
    L = Environ("UserName") ' logging
    D = Date
    
    Open Fichier For Append As #1
    Print #1, L & vbTab & D
    Close #1
End Sub


Bonne soirée
MichelXld
 
Re : Historiser les OUvertures de Fichiers

J'ai trouvé sur cet excellent site et surtout vous contributeurs, le moyen d'historiser les ouvertures de fichiers.... il me manque juste une chose ... si jamais l'utilisateurs n'enregistre pas en sortant (donc ds la plupart des cas) je n'ai aucune trace de passage .....


Bonsoir

une piste
En ecrivant une macro qui se lance avant la fermeture

Sub Workbook_BeforeClose(Cancel As Boolean)

'mise à jour du fichier log

End Sub


JP
 
Re : Historiser les OUvertures de Fichiers

Merci de vos reponses....

Deja en interne au fichier cad sur une feuille trace tous fonctionne bien avec nom utilisateur, date et HEURE si et seulement si ENREGISTREMENT

Avec la methode fichier log la rien ne se passe pas de creation de fichier mais je vais retester et de tte facon je n'aurai pas l'heure... ou je ne connais pas la synthaxe pour rajouter l'heure .....

Je dois opter pour la deuxieme solution (pour les cas frequents de non enregistrement), voir si possible creer un fihcier log.xls qui en fonction des fichiers ouverts, alimenterait une des feuille du fichier log.xls me permettant ainsi d'avoir un seul fichier d'histo mais possible ou pas je ne sais pas ???

Merci
 
Re : Historiser les OUvertures de Fichiers

re MichelXLD

Alors je viens de tester ta modif.....

Erreur 53 sur Open Fichier For Append As #1 Fichier introuvable, le chemin est ok, j'ai meme dans le doute creer un fichier le_fichier.txt ..... meme pb...

.....................
 
Re : Historiser les OUvertures de Fichiers

Re,

Test en deactivant mon anti virus idem....

Je viens de faire cela :
Private Sub Workbook_Open()
'
'Traceur d 'ouverture de Fichier Utilisateur + Date

Workbooks.Open Filename:="L:\Pilo ADLR\Log.xls" ' Ouvrir le fichier Histo (attention chemin)
Windows("Test Histo Externe.xls").Activate
Sheets("Feuil1").Select 'Aller sur feuille pour eviter de voir la completude trace…
MsgBox "AVERTISSEMENT : Activer les macros IMPERATIVEMENT sinon les resultats seront erronés et/ou certaines fonctions seront impossibles. Donc si vous avez repondu NON , fermer le classeur et recommencer. Merci © 2006 PA"
Windows("Log.xls").Activate
Sheets("Trace").Select
a = Sheets("Trace").Cells.Find("*", [A1], , , 1, 2).Row + 1
Sheets("Trace").Range("A" & a).Value = Application.UserName
Sheets("Trace").Range("B" & a).Value = Date
Sheets("Trace").Range("C" & a).Value = Now - Int(Now)
'Sheets("Trace").Protect ("mdp")
ActiveWorkbook.Save
ActiveWorkbook.Close
Windows("Test Histo Externe.xls").Activate
Sheets("Feuil1").Select 'Aller sur feuille synthese

End Sub

L'idee un utilisateur ouvre un des fichier et automatiquement j'ouvre un fichier log.xls avec une feuil trace ou je vais stocker les infos.... je sauvegarde et je ferme le fichier log.xls......

Malheureusement Erreur 53 sur Windows("Log.xls").Activate

Comprend pas..................
 

Pièces jointes

Re : Historiser les OUvertures de Fichiers

rebonsoir

Tu peux tester

Code:
Private Sub Workbook_Open()
Dim Wb As Workbook
Dim a As Long
'Traceur d 'ouverture de Fichier Utilisateur + Date

' Ouvrir le fichier Histo (attention chemin)
Set Wb = Workbooks.Open(Filename:="L:\Pilo ADLR\Log.xls")

a = Wb.Sheets("Trace").Range("A65536").End(xlUp).Row + 1

Wb.Sheets("Trace").Range("A" & a).Value = Environ("username")
Wb.Sheets("Trace").Range("B" & a).Value = Date
Wb.Sheets("Trace").Range("C" & a).Value = Now - Int(Now)

'Fermer en sauvegardant les modifications
Wb.Close True

End Sub



Bonne soirée
MichelXld
 
Re : Historiser les OUvertures de Fichiers

Bonsoir piwa
Salut MichelXld
voilà ce que j'ai fait et cela fonctionnne
j'ai créer un fichier .txt à la racine de C: chez moi

bonne fin de Soirée
 
Re : Historiser les OUvertures de Fichiers

Pile poil Nickel Chrome ......

Impec ca marche du feu de dieu....

Juste 2 details :

1 Environ("username") cela correspond dans le cas d'un reseau au code utilisateur??? et surotut quand on met username seul cela ne me renvoie pas la meme chose ?????????????

2 Le seul autre petit point c'est que visuelement l'utilisateur vois la completude d'un fichier ..... on peut le masquer ????

Mais independament de mes demandes spplementaires c'est extra....

Merci infiniement
 
Re : Historiser les OUvertures de Fichiers

Bonsoir Chti160 et surtout merci....

Je viens de tester chez moi cela ne marche pas meme probleme .... Erreur 53 Fichier introuvable..... c'est donc un mystere......



Merci à toi et bonne soiree
 
Re : Historiser les OUvertures de Fichiers

bonjour

Environ("username") renvoie le profil utilisateur du poste de travail

Application.UserName correspond simplement au nom indiqué dans le champ "Utilisateur" d'Excel
Menu Outil
Options
Onglet général
Champ "Nom utilisateur"



pour masquer le classeur, tu peux par exemple utiliser

Code:
Application.ScreenUpdating = False

en début de procédure, et indiquer

Code:
Application.ScreenUpdating = True

à la fin.


Bonne journée
MichelXld
 
Re : Historiser les OUvertures de Fichiers

Je tiens encore MichelXLD a te remercier .......... c'est tout simplement parfait.................. Merci et longue vie au forum

Ca fonctionne parfaitement et tes explications sont tres claires
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
432
Réponses
0
Affichages
964
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…