protection totale (!) d'un classeur

  • Initiateur de la discussion Yannick
  • Date de début
Y

Yannick

Guest
Salut à tous,
Connaissez-vous un moyen de protéger un classeur Excel contre la copie ? En pratique : j'aimerais placer chez qqun un classeur que j'ai mis longtemps à créer, et je voudrais qu'il puisse l'utiliser mais surtout pas le copier et donc le transmettre à n'importe qui ...
Possible ou pas ?

Merci d'avance.
 
Y

Yannick

Guest
Pour résumer la situation:
- il s'agirait presque toujours d'utilisateurs en standalone
- ils peuvent consulter le classeur et l'utiliser (dans la limite des cellules non protégées)
- et l'idéal serait qu'ils puissent aussi enregistrer les modifications qu'ils ont faites

C'est suffisant comme réponse ?
 
@

@+Thierry

Guest
Bonjour ce Fil,

Je ne sais pas ce que nous résserve mon ami @Xtof@, mais en attendant voici une solution simple pour obliger le User à activer les Macros :

=> Fichier Démo Téléchargeable Lien supprimé(26k)


=> Fil de Discussion Explicatif

Pour le reste, en fait on peut récupérer le nom du User par un appel API qui est disponible dans le fichier "Sample.xls" (livré avec Office, sous C:\Program Files\Microsoft Office\Office10\Samples\"

Récupération Log-In Name :
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long

Sub Get_User_Name()

Dim lpBuff As String * 25
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
MsgBox UserName

End Sub

Récupération Computer Name :
Option Explicit
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long

Sub Get_Computer_Name()
Dim Comp_Name_B As String * 255
Dim Comp_Name As String
GetComputerName Comp_Name_B, Len(Comp_Name_B)
'but the string is always ended with a null terminated string so we can use the Chr(0) function to find the end
Comp_Name = Left(Comp_Name_B, InStr(Comp_Name_B, Chr(0)))
'and return only the computer name
MsgBox Comp_Name
End Sub


Ensuite à mon avis avec tous ces éléments, il suffit de faire pointer une macro évènementielle sur une liste de Users (et/ou) Computers qui vérifiera la présence du Log-In courant au moment du WorkBook_Open sinon on referme le classeur... Tout ceci sans toucher aux bases de registres Windows (pour lesquelles il faut être Admin du Post pour un Accès R/W)

Bonne Programmation et bon appétit
@+Thierry


PS pour les codes si-dessus, je ne peux pas dire si celà fonctionnera sous Win 98, il faut tester, par contre c'est OK sous Win NT 4, 2000, XP Pro, et aussi ME, et XP Home.
 
@

@+Thierry

Guest
Arf le lien ...


=> Fil de Discussion Explicatif Lien supprimé

Dans la démo, il y a aussi la gestion du droit d'enregistrement par password si celà peut vous inspirer...

Re Bon appétit
@+Thierry
 
@

@Christophe@

Guest
Re

Bonjour @Thierry,


Yannick voici un petit fichier;

Si l'utilisateur désactive les macros il vera une page qui lui demande d'activer les macros afin d'accéder au fichier (obligé, afin de forcer l'utilisateur à ouvrir les macros, sans macro, pas possible de vérif le username et computername!)

Quand les macros sont activé:
dès l'ouverture le nom d'utilisateur est comparé au caption L du userform
ainsi que le nom de l'ordi avec la caption T du userform

Modifie donc les caption L et T du userform.

Comme Thierry dis, il y a moyen de crée une liste d'utilisateur et de la joindre au fichier en feuille caché, à toi de voir?


P.S.
@Thierry, j'ai chipoté, parce que le computername renvoyé par le code VBA à 1 caractère de plus que le nom réele???

As tu une explication?


Pour l'idée de la base de registre, je crois que c'est possible, parce que un user a souvent accès à HKEY_CURRENT_USER uniquement? Tous dépends biensur de comment l'admin a configuré tous cela?

Merci

Bonne journée

@Christophe@
 

Pièces jointes

  • Protection.zip
    13.1 KB · Affichages: 38
  • Protection.zip
    13.1 KB · Affichages: 41
  • Protection.zip
    13.1 KB · Affichages: 39
Y

Yannick

Guest
Super, c'est exactement ce que je cherchais MAIS ... mais, mais ... puisque ce n'est pas mon nom d'utilisateur ni de mon PC qui est indiqué, je ne sais que constater que l'exemple fonctionne ...
Comment faire pour récupérer ?
Ca serait vraiment TRES gentil de m'expliquer pas à pas ce que je dois faire (càd où récupérer ce qui crée cette "barrière", où se trouvent les "captions", etc ...).

Un tout grand merci d'avance.

PS: vous aidez les autres pour le plaisir ou bien vous êtes "animateurs" de ce forum ? NB : je peux comprendre qu'on fasse pour le plaisir : tant qu'il ne s'agit que d'utiliser des formules complexes, j'adore aider qqun a avoir un classeur nickel ... :)
 
C

Celeda

Guest
Bonjour,


Je suis votre fil mais j'ai un peu de difficulté, aussi je me permets de vous poser des questions Crhistophe et Thierry,

Christophe : je souhaite retenir ton concept de page de garde qui signale à l'user que si pas de macros actives pas d'utilisation du classeur que je vais tout remodifier en anglais - Ma demande : peux-tu m'isoler la procédure pour faire cela car je t'avoue que je suis perdue dans les codes, SVP. Merci


Thierry : en suivant ton fil, tu proposes gentiment une version à adapter pour 97, penses-tu que tu pourrais essayer de le concevoir et enlever le Certificat (il y a effectivement encore un bon nombre de personnes qui ont 97) afin que j'adapte aussi le concept, SVP. Merci

euh ca bosse dur pour un vendredi!! et pis c'est vachement sérieux!!

Merci à tous les deux,

Celeda
 
Y

Yannick

Guest
Et moi ? on me remercie pas ???
;-) ;-) ;-)

"Merci à Yannick pour avoir posé une bonne question"

Bon, OK, c'est vrai que je n'apporte pas grand chose, ms je n'oublirai pas ce forum quand je serai + calé ...

Celeda, comment as-tu fait pour trouver son code puisque tu ne lui as pas fourni ton username et computername ???
 
T

Ti

Guest
Arnaud, je ne comprends pas ta remarque :

"avec un peu de chance il y a déja des macro dans son classeur et donc l'utilisateur est obligé de les activé pour utilisé correctement le classeur "

même s'il y a des macros dans un classeur, on n'est pas obligé d'accepter le fonctionnement des macros de tous les autres classeurs... ou alors j'ai mal compris ce que tu veux dire. Donc il faut partir du postulat que ce fichier sera utilisé par des users qui dans tous les cas activeront les macros pour que cette protection fonctionne.
 
A

Arnaud

Guest
Bien sur tu n'est pas obligé d'accepter le fonctionnement des macros mais si tu a un classeur avec des macros dont l'utilisateurs auras besoin pour utiliser et faire fonctionner son classeur correctement, il sera bien obligé de les activé ( sinon le classeur est inutule ) et la été ma question c a dire a savoir si il avais de tel macro dans son classeur.
 
@

@Christophe@

Guest
Re

Bonjour Ti, Celeda,...


Celeda, voici un exemple pour toi


Bonne chance

@Christophe@
 

Pièces jointes

  • Celeda.zip
    9.9 KB · Affichages: 35
  • Celeda.zip
    9.9 KB · Affichages: 36
  • Celeda.zip
    9.9 KB · Affichages: 36

Discussions similaires

Réponses
91
Affichages
7 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 020
dernier inscrit
Mzghal