Userform with password [Résolu]

Signaler
Messages postés
15
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
30 octobre 2009
-
Messages postés
15
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
30 octobre 2009
-
bonjour a toutes et a tous,

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

merci d'avance

9 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
comment doit-on deviner sans connaître l'autre fenêtre, NOUS ???!!!!

on (nous lecteurs, et toi) se fiche de se qui se passe à la fermeture, puisque de par le fait, rien ne doit être lié à la fermeture
Messages postés
15
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
30 octobre 2009

rien a voir sur la protection de la feuille ...

j'ai trouver la solution

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
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
Bonjour,

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 
   
    Me.DialogResult = Windows.Forms.DialogResult.Cancel
    Me.Close() 

End Sub

End Class

Puis appelé celui-ci dans ton formulaire principale :

Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
   
If FrmPasswrd.ShowDialog <> Windows.Forms.DialogResult.OK Then
        Application.Exit() 
    Else
        Call UnlockControls 'Fonction qui dévérouille tes contrôles

End If

End Sub

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
15
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
30 octobre 2009

merci je vais testez
Messages postés
15
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
30 octobre 2009

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 ... ???
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
C'est nomale que cela ne fonctionne pas, c'est un code en vb 2005 t'es sous exel 2003 (rien à voir)
 tu as posté dans la mauvaise catégorie :

Vous êtes ici : Thèmes / VB.NET et VB 2005 / Divers / Débutants / userform with password

Si un admin passe pas la ! Merci ;)

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
salut,
(topic déplacé vers VBA)

si VRAI => quitter
sinon => message

en effet il ne faut pas quitter mais faire l'action VRAI uniquement dans ce cas VRAI
c'est donc dans cette partie que tu dois dégriser les boutons
++
Messages postés
15
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
30 octobre 2009

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)
Messages postés
1542
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011

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

Sheets("donnees").Unprotect ("ton mdp")