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 pour cette réponse ça fonctionne très bien pour annule, mais, si je rentre un mauvais MP ou même le bon ça sort en erreur 13 incompatibilité de type ?
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
Bonsoir , Slt Sylvanu @jeanmi : Ne met pas un Input pour Mdp j'ai un truc récent via USF qui va mieux à gérer, je le mettrai dans la prochaine version du planning et tu choisiras
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
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.
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,
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
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.