DEMO UserForm Protection Password du Classeur Macro Activée ou NON-Activée !!

@

@+Thierry

Guest
Bonjour mes amis et amies du Forum

Hier, une question très interressante a été posée par Flo dans ce fil : Lien supprimé

La réponse pour supprimer cette alerte de Sécurité par VBA est NON, mais Flo a demandé "Si on met niveau haut (ou moyen): on ne peut pas faire de protection de fichier excel par macro car on peut ainsi desactiver les macros !!!.... Là ma réponse est OUI !

Ce sujet revenant assez souvent, je me suis dit, je vais faire partager une de mes astuces de développeur afin de permettre à certains/certaines de trouver un palliatif à ce problème quand un User ouvre un classeur sans activer les macros...

Ici j'ai joué plutôt sur la "sécurité" de données "confidentielles" qui contiennent en fait un tutorial pour signer électroniquement un projet VBA (ultra Private and Confidential !! lol)

Cette démo concentre bien le procédé tout simple que j'évoquais justement hier dans une autre fil de discussion Lien supprimé qui consiste à jouer avec la propriété Visible des feuilles à VeryHidden...(voir le fil)

En même temps, pas plus tard qu'hier, Noon demandait aussi un Lien supprimé...

Donc voici une nouvelle démo basée encore sur la Protection de Classeur par VBA uniquement (qui, ceci dit, peut être en plus, complétée par des Protections Classique d'Excel et, of course, du Projet VBA lui-même.

Attention, j'ai volontairement signé ce Projet pour montrer à Flo, et par conséquent les Utilisateurs d'Excel 97 n'auront pas accès aux Codes (pourtant il n'est pas vérouillé, mais c'est un problème de version, je mettrai une version non-signée si demandeurs).

Voilà, je pense que vous trouverez de bonnes astuces là-dedans et je suis à votre disposition (Off Today ;-)) si vous avez des questions...

Bon Aprèm à Tous et Toutes
@+Thierry
 

Pièces jointes

  • USF-VBA-Protected-WorkBook.zip
    25.6 KB · Affichages: 177
N

noon

Guest
SALUT THIERRY
ok c est exatement ce que je veut faire
inserer un mot de passe avant d actionner un bouton

sauf que j ai rien compris
comment tu fais pour lui donner le mot de passe ??

bref ta macro c est ce que je veux mais je ne sais comment la realiser

si tu peut m aider


merci
 
@

@+Thierry

Guest
Re noon,

Disons que dans cette démo, il y a des petits secrets (héhéhé) je vais te montrer...

Le PassWord "Thierry-XLD" est composé de deux choses... la première est très simple, il s'agit d'un label "X" (nommé X) qui est en dehors de la zone du UserForm d'affichage "USFPass"... Son "Caption" dans les Propriétés est "-XLD"

Donc cette méthode est déjà largement suffisante pour permettre de "cacher" le mot de passe plutôt que de l'écrire en dûr dans le Code...(à l'époque j'ai fait "enrager" pas mal de forumeurs sur une autre démo avec cette astuce lol)

Je récapitule, en Mode Design du UserForm, (celui qui contient la TextBox avec "PasswordChar") tu l'élargis, dans une zone non affichablle, tu dessines un Label, où tu inscrit ton Passworld, dans la propriété de ce Label tu le nommes "X" (ou ce que tu veux)... Dans le Code çà donnera ceci :

Private Sub CommandButton1_Click()
With Me.TextBox1
If .Value = X Then
Sheets("variable").Select
.Value = ""
Unload Me '<<<<<< pas Hide comme tu fais ;-)
Else
MsgBox "Vous n'avez pas accès à cette Feuille"
Sheets("Menu").Select
.Value = ""
Unload Me
End If


Maintenant dans ma démo, la seconde partie du PassWord vient de "Y" et là çà vient d'un cellule dans une feuille cachée et c'est la concaténation des deux (MDP = Y & X) qui forme le Password (tordu hein lol)... mais je pense que ta question n'est pas là...

Ce que tu ne comprends pas c'est comment j'arrive à faire ou non l'action sur le bouton suite à l'affichage du USFPass... A cette fin, j'utilise une Variable Boolean Publique (pour tout le projet) nommée "BadPass" (Voir Module Standard "Commun") Les Variables de type Boolean sont une sorte "d'interrupteur", elles ne peuvent avoir pour valeur que True ou False... (Par défaut False, tant qu'elle ne sont pas initialisées)

Si le User ne tape pas le bon mot de passe cette variable est initialisée à True dans cette ligne de Code dans le USFPass :
If Me.TextBox1 <> MDP Then BadPass = True

Par conséquent, dans le UserForm1 quand on click sur le "CommandButton1" on lance d'abord le USFPass puis on vérifie cette Boolean :
If BadPass Then
MsgBox "Mauvais Mot de Passe"
Exit Sub '<<<<<< ICI on est viré du reste du code...
End If

Ok tu me suis ? Si BadPass est True le reste du code du CommandButton1 ne s'exécutera pas... Voilà Grosso-Modo le déroulement...

Il y a aussi un truc important à comprendre sur le USFPass... c'est le contrôle de sortie de ce UserForm avec "UserForm_QueryClose" pour éviter que le User sorte par la Croix... La Variable "Cancel" déclarée d'origine pour cet évènement empêche la fermeture si elle est initialisée à True... Par conséquent je déclare publique (au niveau de ce module uniquement) une autre variable Boolean "Sortie" par ma déclaration "Dim Sortie As Boolean" en top du module de USFPass...
Quand on lance le USFPass Sortie est initialisée à True, mais, quand on click sur le bouton OK, elle est initialisée à False, ce qui permet de sortir... Un peu compliqué peut-être ?

Enfin voilà en grandes lignes... Si tu as des questions plus précises ...

Bon Aprèm
@+Thierry
 
P

pat5

Guest
Bonjour @+Thierry

Encore une surprise à découvrir. Tu manquais vraiment, lol !!!

Par contre tu dis au N° 2 :

Sélectionner le Certificat (Celui de SelfCert devrait apparaître)

Chez moi rien n'apparait ( Excel 2003 )

Et à l'ouverture il me demande d'installer ton certificat pour l'autorisation.

Celà consiste en quoi ???

A+ ;o)

Pat5
 
@

@+Thierry

Guest
Salut Pat5
l
Huum Excel 2003, qu'est ce qu'il veut ? "'installer mon certificat pour l'autorisation" ou juste "Toujours Faire Confiance Aux Macros Provenant de cette Source" ? ou encore "Ajouter aux Sources Fiables" ?

Car là sous 2000 (à la maison) je n'ai pas ce genre de "propositions" ! lol

Sinon pour le SelfCert je vous conseille de reprendre le tutorial de Blandine sous le Fil Lien supprimé

SelfCert.exe se trouve normalement avec Office 2000 et XP mais attention ceci est valable pour une utilisation personnelle uniquement afin d'identifier vos propres Macros de celles des autres...

Pour une diffusion et un déploiement de vos programmes en réseau ou sur le net il faut acheter (pas donnée) une certification auprès de VeriSign (par exemple, sinon, voir la page de Ce lien n'existe plus)

Bon Fin d'Aprèm
@+Thierry
 
J

jean

Guest
Bonjour,

Je souhaite créer un fichier client sous forme de tableau, mais j'aimerai (si possible sur excel) que lorsque je clic sur le nom du client, que toutes ses coordonnées s'affichent.

Ex : si je clic sur JEAN :

Je voudrais qu'apparaissent les données que j'aurais saisies au préalable soit :

Adresse du correspondant,
son n°de téléphone,
son email,
ses fonctions,
etc...

Je vous remercie de bien vouloir m'aider si vous avez la solution..

Merci à vous.
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 989
Membres
101 856
dernier inscrit
Marina40