j'aimerais savoir, j'ai créer un userform contenant un textbox et un commandbutton. l'action ne peu s'acomplire le temps que la valeur du textbox ne correspond pas a la valeur du password.
MAIS
j'ai une faille dans mon petit programme.
de cette fenètre userform si le mot de passe n'est pas correctement entrée on ne peu accédez, mon problème est en cliquant sur la croix de cette fenètre pour quitter l'application. l'action s'accomplie.
mon action est :
je n'autorise pas l'accès si le password n'est pas correct et je n'active pas les 3 commandbuttons.
en fermant la fenètre par cette fameuse croix les commandbutton s'active. comment faire pour que cela ne se produise pas???
voici mon code :
Private Sub CommandButton1_Click()
If TextBox1.Value = "aa" Then
Unload Me
Else
MsgBox ("You Entered A Wrong Password . Please Take Again"), vbCritical
End If
End Sub
Private Sub ToggleButton1_Click() 'Locked/Unlocked'
If ToggleButton1.Value = False Then
ToggleButton1.Caption = "Locked"
ActiveSheet.Protect Password:="password"
ActiveSheet.CommandButton1.Enabled = False 'Creat New Copy'
ActiveSheet.CommandButton2.Enabled = False 'Delete Line Selected'
ActiveSheet.CommandButton3.Enabled = False 'Creat New Copy'
Else
ToggleButton1.Caption = "Unlocked"
UserForm1.Show
End If
End Sub
+ l'action suivante:
Private Sub CommandButton1_Click()
If TextBox1.Value = "password" Then
ActiveSheet.CommandButton1.Enabled = True 'Creat New Copy'
ActiveSheet.CommandButton2.Enabled = True 'Delete Line Selected'
ActiveSheet.CommandButton3.Enabled = True 'Creat New Copy'
ActiveSheet.Unprotect Password:="password"
Unload Me
Else
MsgBox ("You Entered A Wrong Password . Please Take Again"), vbCritical
End If
End Sub
A mon avis tu t'y prend mal, tu ne peux pas empecher l'utilisateur de fermer une fenêtre ca si celui ci ne se souvient plus du mot de passe, il restera avec le prog ouvert le temps de la session.
Tu devrais créer un formulaire pour la validation de mot de passe :
Public Class FrmPasswrd
Private Sub cmd_Ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Ok.Click
If txt_Pass <> My.Settings.PassWord Then
MsgBox("Mauvais mot de passe", MsgBoxStyle.Exclamation)
Exit Sub
Else
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close
End If
End Sub
PrivateSub cmd_Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Cancel.Click
oui mais la question est ... si je met un commandbutton "close" l'application se ferme mais active mes 3 commandbuttons als ke le but est de les laisser bloquer ... et dans mon cas je n'est seulement que le commandbutton "OK" pour valider le password ... et pour quitter l'application si l'utilisateur ne conner pas le password cliquerra automatiquement sur cette petite croix ... d'ou mon bsoin de laisser bloquer mes commandbuttons ....
j'ai ésseillez le code que tu ma envoyer ... je susi encore sous excel 2003 et il m'affiche des ligne en rouge ... après je ne sais pas si j'ai bien fait d'écrire une partie dans "module" et l'autre partie a mon commandbutton "OK" pour appeler la commande ... ai-je bien fait ... ???
okey
puis-je avoir une petite aide du code a écrire ?
cette fonction du message qui s'affiche fonctionne mais je ne comprend pas comment l'affecter a le fermeture de cette fenêtre (userform)
Pourquoi tu ne mettrai pas une protection sur l'ensemble du fichier ? (outil protection etc...)
ensuite tu fait une fonction de verouillage a chaque fermeture du classeur:
Sheets("donnees").Protect Password:="ton mdp", DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("menu").Select
ensuite ton formulaire de deverouillage contiendra le code suivante