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

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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

jeanmi

XLDnaute Occasionnel
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
 

JBARBE

XLDnaute Barbatruc
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
 

jeanmi

XLDnaute Occasionnel
... 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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • MDP.xlsm
    14.4 KB · Affichages: 3

jeanmi

XLDnaute Occasionnel
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
 

Discussions similaires

Réponses
8
Affichages
483

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan