XL 2010 sortir du programme si inputBox = annuler, x ou mauvaise saisie

  • Initiateur de la discussion Initiateur de la discussion jeanmi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeanmi

XLDnaute Occasionnel
Bonjour,

Tous est dans le titre

Voici le code que j’utilise :
VB:
Sub Controle_autorisation()
Dim mot_de_passe As String
mot_de_passe = Application.InputBox("Entrer le mot de passe xxxx :", "Mot de passe", "xxxx")
If VarType(mot_de_passe) = vbBoolean Then Exit Sub
If mot_de_passe <> "xxxxF" Then Exit Sub
imp_onglet_3_parties 'lance la procédure dpour imprimer fichier Excel en 3 PDF
End Sub

merci de l'aide
cordialement
 
Alors supprimez le typage de mot_de_passe car ce n'est pas une chaine en cas d'annulation.
Essayez ce test :
VB:
Sub Controle_autorisation()
Dim mot_de_passe
mot_de_passe = Application.InputBox("Entrer le mot de passe xxxx :", "Mot de passe", "xxxx")
If VarType(mot_de_passe) = vbBoolean Then Exit Sub
If mot_de_passe = "xxxx" Then Exit Sub
MsgBox "Mot de passe entré :  " & mot_de_passe
End Sub
 
Alors supprimez le typage de mot_de_passe car ce n'est pas une chaine en cas d'annulation.
Essayez ce test :
VB:
Sub Controle_autorisation()
Dim mot_de_passe
mot_de_passe = Application.InputBox("Entrer le mot de passe xxxx :", "Mot de passe", "xxxx")
If VarType(mot_de_passe) = vbBoolean Then Exit Sub
If mot_de_passe = "xxxx" Then Exit Sub
MsgBox "Mot de passe entré :  " & mot_de_passe
End Sub
Merci ça marche,
mais j'ai remplacé If mot_de_passe = "xxxx" Then Exit Sub par If mot_de_passe <> "xxxx" Then Exit Sub
cordialement
 
Bonjour à tous,
Peut-être ceci !
Bonne journée !
VB:
Sub Controle_autorisation()
Dim mot_de_passe
mot_de_passe = Application.InputBox("Entrer le mot de passe xxxx :", "Mot de passe", "xxxx")
If mot_de_passe = "xxxx" Then
MsgBox "Mot de passe entré :  " & mot_de_passe
Exit Sub
Else
MsgBox "Mot de passe incorrect "
Exit Sub
End If
End Sub
 
... donc vous sortez si le mot de passe vaut "xxxx" ? Etrange.
Oui effectivement, après réflexion, il y a surement un problème de gestion du MP

VB:
Sub mot_de_passe_S()

Dim mot_de_passe

mot_de_passe = ""
mot_de_passe = Application.InputBox("Entrer le mot de passe 5 caractères :", "Mot de passe", "SSSSS")
If VarType(mot_de_passe) = vbBoolean Then Exit Sub 'sortie de la sub si une autre action que oui
If mot_de_passe <> "SSSSS" Then Exit Sub

' après ça retourne à une procédure

End Sub

Voici ce que j'espérais faire , donc si le MP n'est pas le bon on ne retourne pas à la procédure et là j'ai l'impression que tous fonctionne comme s'il n'y avait pas de MP. là il ne doit y avoir qu'un essai pour pas compliquer la chose.

au départ,

a) j'ai un bouton qui commande une procédure 1,
b) cette procédure 1, si elle est remplie correctement, fait appel à la procédure mot_de_passe_S
c) lorsque l'on sort de cette procédure "mot_de_passe_S " on retourne à la procédure 1
d) Dans la procédure 1 on revient et avant le End Sub on part vers une procédure 2

j'utilise la partie mot_de_passe_S pour plusieurs procédure

j'espère avoir réussi à exprimer mon besoin correctement, pas facile.

Cordialement
 
Bonjour,
Le plus simple est de créer une variable globale vue par tous es modules;
Cette variable est initialisée par mot_de_passe_S, est vide si mot de passe mauvais et vaut "oui" si mot de passe correct.
( à noter qu'il ne faut surtout pas remplir l'inputbox avec le bon mot de passe, car il suffit alors de faire OK pour continuer )
VB:
Public MotDePasseOK
Sub mot_de_passe_S()
mot_de_passe = "": MotDePasseOK = ""
mot_de_passe = Application.InputBox("Entrer le mot de passe 5 caractères :", "Mot de passe", "")
If VarType(mot_de_passe) = vbBoolean Then Exit Sub 'sortie de la sub si une autre action que oui
If mot_de_passe = "SSSSS" Then MotDePasseOK = "oui"
End Sub


Sub Procedure1()
    Call mot_de_passe_S
    If MotDePasseOK = "oui" Then
        MsgBox "Le bon mot de passe a été entré"
    Else
        MsgBox "Mauvais mot de passe. Try again !"
    End If
End Sub
 

Pièces jointes

Bonjour,
Le plus simple est de créer une variable globale vue par tous es modules;
Cette variable est initialisée par mot_de_passe_S, est vide si mot de passe mauvais et vaut "oui" si mot de passe correct.
( à noter qu'il ne faut surtout pas remplir l'inputbox avec le bon mot de passe, car il suffit alors de faire OK pour continuer )
VB:
Public MotDePasseOK
Sub mot_de_passe_S()
mot_de_passe = "": MotDePasseOK = ""
mot_de_passe = Application.InputBox("Entrer le mot de passe 5 caractères :", "Mot de passe", "")
If VarType(mot_de_passe) = vbBoolean Then Exit Sub 'sortie de la sub si une autre action que oui
If mot_de_passe = "SSSSS" Then MotDePasseOK = "oui"
End Sub


Sub Procedure1()
    Call mot_de_passe_S
    If MotDePasseOK = "oui" Then
        MsgBox "Le bon mot de passe a été entré"
    Else
        MsgBox "Mauvais mot de passe. Try again !"
    End If
End Sub
Bonjour,

Merci pour la proposition, je mettre en application.
oui pour l'inputbox, j'ai mis le MP pour simplifier pendant la mise au point. Effectivement je vais retirer cela.

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
1 K
Réponses
5
Affichages
799
Retour