Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

EXCEL 2003 SP2 - Problèmatique de sécurité

4 réponses
Avatar
Saya45
Bonjour,

Je me permet de vous contacter pour la question suivante :

Est-il possible de savoir qui a consulter (en lecture) un fichier .xls qui
se trouve sur un répertoire partagé en réseau.
Seule 3 personnes ont les accès sur ce fichier et ce ne sont pas elles qui
l'on consulté.
Personne n'a modifié ce fichier lors de la consultation.

Merci de votre aide.

4 réponses

Avatar
Mousnynao
Bonjour,

Voici une soluce parmi tant d'autres :

Créer une feuille nommé "Utilisateur"

Ajouter ce code dans le module ThisWorkbook

Private Sub Workbook_Open()

Dim Valeur As String, Ligne As Long
Dim oWsh As Object, oWshEnv As Object

Set oWsh = CreateObject("WScript.Shell")
Set oWshEnv = oWsh.Environment("PROCESS")
Valeur = oWsh.ExpandEnvironmentStrings("'%username%'")
Valeur = Right(Valeur, Len(Valeur) - 1)
Valeur = Left(Valeur, Len(Valeur) - 1)
Sheets("Utilisateurs").Select
Ligne = Range("A1:A65536").End(xlDown).Row
Cells(Ligne + 1, 1).Value = Valeur
Sheets(1).Select

End Sub

mousnynao

Bonjour,

Je me permet de vous contacter pour la question suivante :

Est-il possible de savoir qui a consulter (en lecture) un fichier .xls qui
se trouve sur un répertoire partagé en réseau.
Seule 3 personnes ont les accès sur ce fichier et ce ne sont pas elles qui
l'on consulté.
Personne n'a modifié ce fichier lors de la consultation.

Merci de votre aide.


Avatar
Mousnynao
oups !

Private Sub Workbook_Open()

Dim Valeur As String, Ligne As Long
Dim oWsh As Object, oWshEnv As Object

Set oWsh = CreateObject("WScript.Shell")
Set oWshEnv = oWsh.Environment("PROCESS")
Valeur = oWsh.ExpandEnvironmentStrings("'%username%'")
Valeur = Right(Valeur, Len(Valeur) - 1)
Valeur = Left(Valeur, Len(Valeur) - 1)
Sheets("Utilisateurs").Select
Ligne = Range("A65536").End(xlUp).Row
Cells(Ligne + 1, 1).Value = Valeur
Sheets(1).Select

End Sub

mousnynao


Bonjour,

Je me permet de vous contacter pour la question suivante :

Est-il possible de savoir qui a consulter (en lecture) un fichier .xls qui
se trouve sur un répertoire partagé en réseau.
Seule 3 personnes ont les accès sur ce fichier et ce ne sont pas elles qui
l'on consulté.
Personne n'a modifié ce fichier lors de la consultation.

Merci de votre aide.


Avatar
François
Bonjour

J'ai eu à le faire pour un fichier. J'ai créé un feuille cachée "Memoire"
(mise en Veryhidden) et j'ai mis ces macros en :

*********************************************************************
dans ThisWorkbook,

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Application.ScreenUpdating = False ' it doesn't show all the
changements...
For Each n In ActiveWorkbook.Sheets 'we introduce the last saving date
on each sheet
If Right(n.Name, 5) = ".list" Then
Sheets(n.Name).Range("Z1").Value = Date
Sheets(n.Name).Range("AF1").Value = "(" &
UCase(Left(Environ("username"), 1)) & ")" ' with the first letter of the
username !
ElseIf Right(n.Name, 5) = " list" Then
With Sheets(n.Name).PageSetup
.CenterHeader = "&""Arial,Gras""&14MISSION TRAVEL / LEAVE
PLANS"
.CenterFooter = "&""Arial,Gras""Updated on &D"
End With
ElseIf n.Name <> "memoire" And n.Name <> "Data" Then
Sheets(n.Name).Range("K2").Value = Date
Sheets(n.Name).Range("O2").Value = "(" &
UCase(Left(Environ("username"), 1)) & ")" ' with the first letter of the
username !
End If
Next n
Sheets("Memoire").[A65000].End(xlUp).Offset(1, 0) = Environ("username")
' we keep in memory who opened the file
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1) =
Sheets("Memoire").[AA1] ' we keep in memory the time the file is open
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 2) = Now ' we keep in
memory the time the file is closed
If Sheets("Memoire").[A65000].End(xlUp) =
Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 0) Then
Sheets("Memoire").[A65000].End(xlUp).Font.ColorIndex = 2
If Day(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1)) =
Day(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 1)) _
And Month(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1)) =
Month(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 1)) Then
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1).NumberFormat =
"hh:mm"
If Day(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 2)) =
Day(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 2)) _
And Month(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 2))
= Month(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 2)) Then
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
2).NumberFormat = "hh:mm"
Else
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
2).NumberFormat = "d mmm hh:mm"
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
2).Font.ColorIndex = 3 ' red
End If
Else
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1).NumberFormat =
"d mmm hh:mm"
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
1).Font.ColorIndex = 10 ' green
End If
Else
Sheets("Memoire").[A65000].End(xlUp).Font.ColorIndex = 5 ' blue
End If
Sheets("Memoire").Visible = xlVeryHidden ' we hide secret sheets, if no
longer Very hidden
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_Open()

Sheets("Memoire").[AA1] = Now ' we keep in memory the time the file is
open
Sheets("Memoire").Visible = xlVeryHidden ' we make shure to hide secret
sheets
End Sub
*******************************************************************
cela en Auto_Open dans ThisWorkbook,

Private Sub Workbook_Open()
Sheets("Memoire").[AA1] = Now ' we keep in memory the time the file is
open
Sheets("Memoire").Visible = xlVeryHidden ' we make shure to hide secret
sheets
End Sub

********************************************************************

et dans un userform avec Textebox et bouton "OK", ceci :
(le MdP se truve en cellule AC1 = Cells(1, 29) !)

Private Sub OK_CommandButton_Click()
If password_TextBox = "" Then
MsgBox ("No valid password !")
ElseIf password_TextBox.Value = Sheets("Memoire").Cells(1, 29).Value
Then
Sheets("Memoire").Visible = True
Sheets("Memoire").Activate
Unload formulaire_mot_de_passe
Else
MsgBox "Invalid password"
Unload formulaire_mot_de_passe
End If
End Sub
Peut-être cel peut-il être une base pour toi ?

Si tu veux plus de détails ou explications, demande !

François

"Saya45" a écrit dans le message de news:

Bonjour,

Je me permet de vous contacter pour la question suivante :

Est-il possible de savoir qui a consulter (en lecture) un fichier .xls qui
se trouve sur un répertoire partagé en réseau.
Seule 3 personnes ont les accès sur ce fichier et ce ne sont pas elles qui
l'on consulté.
Personne n'a modifié ce fichier lors de la consultation.

Merci de votre aide.


Avatar
Saya45
Un grand merci pour votre aide à tous les 2.

Bonne journée
-----------------------


Bonjour

J'ai eu à le faire pour un fichier. J'ai créé un feuille cachée "Memoire"
(mise en Veryhidden) et j'ai mis ces macros en :

*********************************************************************
dans ThisWorkbook,

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Application.ScreenUpdating = False ' it doesn't show all the
changements...
For Each n In ActiveWorkbook.Sheets 'we introduce the last saving date
on each sheet
If Right(n.Name, 5) = ".list" Then
Sheets(n.Name).Range("Z1").Value = Date
Sheets(n.Name).Range("AF1").Value = "(" &
UCase(Left(Environ("username"), 1)) & ")" ' with the first letter of the
username !
ElseIf Right(n.Name, 5) = " list" Then
With Sheets(n.Name).PageSetup
.CenterHeader = "&""Arial,Gras""&14MISSION TRAVEL / LEAVE
PLANS"
.CenterFooter = "&""Arial,Gras""Updated on &D"
End With
ElseIf n.Name <> "memoire" And n.Name <> "Data" Then
Sheets(n.Name).Range("K2").Value = Date
Sheets(n.Name).Range("O2").Value = "(" &
UCase(Left(Environ("username"), 1)) & ")" ' with the first letter of the
username !
End If
Next n
Sheets("Memoire").[A65000].End(xlUp).Offset(1, 0) = Environ("username")
' we keep in memory who opened the file
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1) =
Sheets("Memoire").[AA1] ' we keep in memory the time the file is open
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 2) = Now ' we keep in
memory the time the file is closed
If Sheets("Memoire").[A65000].End(xlUp) =
Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 0) Then
Sheets("Memoire").[A65000].End(xlUp).Font.ColorIndex = 2
If Day(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1)) =
Day(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 1)) _
And Month(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1)) =
Month(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 1)) Then
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1).NumberFormat =
"hh:mm"
If Day(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 2)) =
Day(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 2)) _
And Month(Sheets("Memoire").[A65000].End(xlUp).Offset(0, 2))
= Month(Sheets("Memoire").[A65000].End(xlUp).Offset(-1, 2)) Then
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
2).NumberFormat = "hh:mm"
Else
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
2).NumberFormat = "d mmm hh:mm"
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
2).Font.ColorIndex = 3 ' red
End If
Else
Sheets("Memoire").[A65000].End(xlUp).Offset(0, 1).NumberFormat =
"d mmm hh:mm"
Sheets("Memoire").[A65000].End(xlUp).Offset(0,
1).Font.ColorIndex = 10 ' green
End If
Else
Sheets("Memoire").[A65000].End(xlUp).Font.ColorIndex = 5 ' blue
End If
Sheets("Memoire").Visible = xlVeryHidden ' we hide secret sheets, if no
longer Very hidden
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_Open()

Sheets("Memoire").[AA1] = Now ' we keep in memory the time the file is
open
Sheets("Memoire").Visible = xlVeryHidden ' we make shure to hide secret
sheets
End Sub
*******************************************************************
cela en Auto_Open dans ThisWorkbook,

Private Sub Workbook_Open()
Sheets("Memoire").[AA1] = Now ' we keep in memory the time the file is
open
Sheets("Memoire").Visible = xlVeryHidden ' we make shure to hide secret
sheets
End Sub

********************************************************************

et dans un userform avec Textebox et bouton "OK", ceci :
(le MdP se truve en cellule AC1 = Cells(1, 29) !)

Private Sub OK_CommandButton_Click()
If password_TextBox = "" Then
MsgBox ("No valid password !")
ElseIf password_TextBox.Value = Sheets("Memoire").Cells(1, 29).Value
Then
Sheets("Memoire").Visible = True
Sheets("Memoire").Activate
Unload formulaire_mot_de_passe
Else
MsgBox "Invalid password"
Unload formulaire_mot_de_passe
End If
End Sub
Peut-être cel peut-il être une base pour toi ?

Si tu veux plus de détails ou explications, demande !

François

"Saya45" a écrit dans le message de news:

Bonjour,

Je me permet de vous contacter pour la question suivante :

Est-il possible de savoir qui a consulter (en lecture) un fichier .xls qui
se trouve sur un répertoire partagé en réseau.
Seule 3 personnes ont les accès sur ce fichier et ce ne sont pas elles qui
l'on consulté.
Personne n'a modifié ce fichier lors de la consultation.

Merci de votre aide.