OVH Cloud OVH Cloud

rendre un fichier excel lisible uniquement sur reseau associatif

6 réponses
Avatar
fredericrenaudin
bonjour,
je sais pas si je pose la bonne question au bon endroit mais j'essaye quand
meme, voila:

je voudrais faire en sorte qu'un de mes fichiers excel ne soit lisible et
utilisable uniquement sur mon reseau local dans ma petite asso. De facon a
ce que mes membres ne "s'amuse pas" a l'embarqué chez eux.

je ne sais pas comment faire !

j'ai essayé avec des macros de ne pas faire afficher les menus , le menu
contextuel, les "copier coller", la fonction enregistrer sous mais ces
derniers peuvent toujours le copier et l'emmnener chez eux!

si quelqu'un a une idée, du genre: realiser une macro qui fait un ping sur
le serveur hebergeur et en fonction de la reponse forcer l'affichage d'une
couleur blanche pour les lettres et d'un fond blanc ce qui conjoitement
avec l'absence de certaine fonctions comme le "copier coller" et des menus
rendrait le fichier excel inutilisable ailleurs qu'en presence du serveur
hebergeur.

comme je suis une brel en programmation je sollicite humblement votre aide

f.renaudin@free.fr

6 réponses

Avatar
Christian Herbé

bonjour,
je sais pas si je pose la bonne question au bon endroit mais j'essaye quand
meme, voila:

je voudrais faire en sorte qu'un de mes fichiers excel ne soit lisible et
utilisable uniquement sur mon reseau local dans ma petite asso. De facon a
ce que mes membres ne "s'amuse pas" a l'embarqué chez eux.


Doit-on deviner que le fichier est stocké sur un serveur web ou FTP ?
Ou bien est-il sur une des machines du réseau local ?

De quoi ont besoin les utilisateurs, simplement visualiser les données
ou ont-ils besoin des fonctionnalités Excel ?

Si c'est une simple visualisation, transforme le fichier en PDF(*).
Ils pourront l'emporter sans le transformer enfin presque parce qu'il
existe quand même des solutions mais elles ne sont pas à la porté de
l'utilisateur lambda.

(*) on trouve des logiciels gratuits pour écrire en PDF

Avatar
FxM
Bonsoir,

Tu peux t'inspirer des fonction suivantes pour lister les lecteurs,
déterminer le type de lecteur ou leur numéro de série.

'===== Function DriveSerialNumber(Lecteur)
Dim fso, d
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName _
(fso.GetAbsolutePathName(Lecteur & ":")))
DriveSerialNumber = d.SerialNumber
End Function
MsgBox DriveSerialNumber("C")
(Merci FS)


'===== Private Declare Function GetLogicalDrives Lib "kernel32" () As Long
Private Declare Function GetDriveType Lib "kernel32" Alias
"GetDriveTypeA" (ByVal nDrive As String) As Long

Public Enum DriveType
DRIVE_UNKNOWN = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE = 2
DRIVE_FIXED = 3
DRIVE_REMOTE = 4
DRIVE_CDROM = 5
DRIVE_RAMDISK = 6
End Enum

Public Function GetDriveList(Optional DriveType As DriveType = -1) As
String
Dim lDrives As Long
Dim x As Integer
Dim sRetVal As String
lDrives = GetLogicalDrives
If lDrives > 0 Then
For x = 0 To 24
If ((2 ^ x) And lDrives) > 0 Then
If DriveType < 0 Then
sRetVal = sRetVal & " " & Chr(65 + x)
Else
If GetDriveType(Chr(65 + x) & ":") = DriveType Then
sRetVal = sRetVal & " " & Chr(65 + x)
End If
End If
End If
Next x
If Len(sRetVal) > 1 Then sRetVal = Mid(sRetVal, 2)
End If
GetDriveList = sRetVal
End Function

Sub test()
zz = GetDriveList
End Sub


@+
FxM

wrote:

bonjour,
je sais pas si je pose la bonne question au bon endroit mais j'essaye quand
meme, voila:

je voudrais faire en sorte qu'un de mes fichiers excel ne soit lisible et
utilisable uniquement sur mon reseau local dans ma petite asso. De facon a
ce que mes membres ne "s'amuse pas" a l'embarqué chez eux.

je ne sais pas comment faire !

j'ai essayé avec des macros de ne pas faire afficher les menus , le menu
contextuel, les "copier coller", la fonction enregistrer sous mais ces
derniers peuvent toujours le copier et l'emmnener chez eux!

si quelqu'un a une idée, du genre: realiser une macro qui fait un ping sur
le serveur hebergeur et en fonction de la reponse forcer l'affichage d'une
couleur blanche pour les lettres et d'un fond blanc ce qui conjoitement
avec l'absence de certaine fonctions comme le "copier coller" et des menus
rendrait le fichier excel inutilisable ailleurs qu'en presence du serveur
hebergeur.

comme je suis une brel en programmation je sollicite humblement votre aide






Avatar
1) le fichier peut etre stocké sur le serveur http mais je sais pas comment
utiliser les fonctionnalités excel necessaire (notamment les formules de
calculs)
donc sur le reseau local me semblerait plus judicieux
2) c un prg de calcul donc les utilisateurs ont besoins des fonctionnalités
excel (notamment les formules de calculs)(bis)

"Christian Herbé" a écrit dans le message news:


bonjour,
je sais pas si je pose la bonne question au bon endroit mais j'essaye
quand


meme, voila:

je voudrais faire en sorte qu'un de mes fichiers excel ne soit lisible
et


utilisable uniquement sur mon reseau local dans ma petite asso. De facon
a


ce que mes membres ne "s'amuse pas" a l'embarqué chez eux.


Doit-on deviner que le fichier est stocké sur un serveur web ou FTP ?
Ou bien est-il sur une des machines du réseau local ?

De quoi ont besoin les utilisateurs, simplement visualiser les données
ou ont-ils besoin des fonctionnalités Excel ?

Si c'est une simple visualisation, transforme le fichier en PDF(*).
Ils pourront l'emporter sans le transformer enfin presque parce qu'il
existe quand même des solutions mais elles ne sont pas à la porté de
l'utilisateur lambda.

(*) on trouve des logiciels gratuits pour écrire en PDF





Avatar
merci de m'avoir repondu
peux tu me donner plus d'explications quand aux fonctions fournies ?
"prcq j'y comprends rien...."

"FxM" a écrit dans le message news:
#
Bonsoir,

Tu peux t'inspirer des fonction suivantes pour lister les lecteurs,
déterminer le type de lecteur ou leur numéro de série.

'===== > Function DriveSerialNumber(Lecteur)
Dim fso, d
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName _
(fso.GetAbsolutePathName(Lecteur & ":")))
DriveSerialNumber = d.SerialNumber
End Function
MsgBox DriveSerialNumber("C")
(Merci FS)


'===== > Private Declare Function GetLogicalDrives Lib "kernel32" () As Long
Private Declare Function GetDriveType Lib "kernel32" Alias
"GetDriveTypeA" (ByVal nDrive As String) As Long

Public Enum DriveType
DRIVE_UNKNOWN = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE = 2
DRIVE_FIXED = 3
DRIVE_REMOTE = 4
DRIVE_CDROM = 5
DRIVE_RAMDISK = 6
End Enum

Public Function GetDriveList(Optional DriveType As DriveType = -1) As
String
Dim lDrives As Long
Dim x As Integer
Dim sRetVal As String
lDrives = GetLogicalDrives
If lDrives > 0 Then
For x = 0 To 24
If ((2 ^ x) And lDrives) > 0 Then
If DriveType < 0 Then
sRetVal = sRetVal & " " & Chr(65 + x)
Else
If GetDriveType(Chr(65 + x) & ":") = DriveType Then
sRetVal = sRetVal & " " & Chr(65 + x)
End If
End If
End If
Next x
If Len(sRetVal) > 1 Then sRetVal = Mid(sRetVal, 2)
End If
GetDriveList = sRetVal
End Function

Sub test()
zz = GetDriveList
End Sub


@+
FxM

wrote:

bonjour,
je sais pas si je pose la bonne question au bon endroit mais j'essaye
quand


meme, voila:

je voudrais faire en sorte qu'un de mes fichiers excel ne soit lisible
et


utilisable uniquement sur mon reseau local dans ma petite asso. De facon
a


ce que mes membres ne "s'amuse pas" a l'embarqué chez eux.

je ne sais pas comment faire !

j'ai essayé avec des macros de ne pas faire afficher les menus , le menu
contextuel, les "copier coller", la fonction enregistrer sous mais ces
derniers peuvent toujours le copier et l'emmnener chez eux!

si quelqu'un a une idée, du genre: realiser une macro qui fait un ping
sur


le serveur hebergeur et en fonction de la reponse forcer l'affichage
d'une


couleur blanche pour les lettres et d'un fond blanc ce qui conjoitement
avec l'absence de certaine fonctions comme le "copier coller" et des
menus


rendrait le fichier excel inutilisable ailleurs qu'en presence du
serveur


hebergeur.

comme je suis une brel en programmation je sollicite humblement votre
aide











Avatar
Christian Herbé

donc sur le reseau local me semblerait plus judicieux
2) c un prg de calcul donc les utilisateurs ont besoins des fonctionnalités
excel (notamment les formules de calculs)(bis)


colle le code suivant dans "Thisworbook" et protège les macros des
regards indiscrets

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
mdp1 = "abc"
mdp2 = InputBox("entrez le mot de passe : ")
If mdp2 <> mdp1 Then
MsgBox "Vous n'avez pas le droit d'emporter ce fichier"
Application.DisplayAlerts = False
ActiveWorkbook.Close
End If
End Sub

Avatar
FxM
Bonsoir,

Tu as bien fait de poser la question car en faisant l'essai, je
découvre que le type de lecteur est également disponible dans la
variable d de la première fonction. On peut donc simplifier un gros
peu ;o)

D'abord, tu as une macro bête pour obtenir le numéro de série et le
type de lecteur où est placé ton fichier.

Pour écrire les macros : Alt-F11 et double-clic gauche sur
Thisworkbook. Copies-y ce qui suit :

Sub decouvre()
Dim fso, d
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName _
(fso.GetAbsolutePathName(Lecteur & ":")))
Lecteur = Left(ActiveWorkbook.Path, 1)
zz = d.SerialNumber
yy = d.Drivetype
Stop
End Sub

Effectue cette macro en mode pas-à-pas (par pression sur F8) et note
bien les valeurs des variables Lecteur, zz et yy car tu vas en avoir
besoin pour les inscrire dans la macro qui suit :

Private Sub Workbook_Open()
Dim fso, d
Lecteur = Left(ActiveWorkbook.Path, 1)
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName _
(fso.GetAbsolutePathName(Lecteur & ":")))
If (d.SerialNumber <> 1039198825) Or _
(d.Drivetype <> 2) or _
Lecteur <> "D" Then
MsgBox "Vous n'êtes pas autorisé à utiliser le fichier hors réseau"
ActiveWorkbook.Close False
End If
End Sub

La ligne importante est :
If (d.SerialNumber <> 1039198825) Or _ 'n° de série
(d.Drivetype <> 2) or _ 'type de lecteur
Lecteur <> "D" Then 'lettre de lecteur
Les valeurs indiquées sont celles de mon disque local D: (type 2)
Inutile de te dire que tu dois adapter sinon tu ne pourras l'ouvrir
que sur mon disque ;o)
Si le disque n'est pas D ou s'il n'est pas un lecteur fixe ou si le n°
n'est pas celui indiqué, message et sortie sans sauvegarder.

Une fois les valeurs notées et le fichier débuggé, tu pourras
supprimer la macro decouvre().

Cette protection reste toutefois tres facile à contourner :o|

@+
FxM