Mot de Passe Annuler

terpick

XLDnaute Occasionnel
Bonjour le Forum!

Dans mon livre Excel Vba j'ai pris une macro pour imposer le mot de passe.

Tout fonctionne, sauf si l'utilisateur appuie sur annuler sans rien saisir il voit le message:

Votre demande ne peut être exécutée sans le mot de passe. Après avoir appuer sur Valider il a quand même l'accès sur la page.

Je doute, que c'est

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) qui n'est pas pris en considération, mais je ne sais pas comment changer la situation :confused:



Voilà la macro, pour l'oeuil de spécialiste l'erreur peut être évidente?


Option Explicit

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Me.Hide
MsgBox "Votre demande ne peut être exécutée sans le mot de passe.", vbOKOnly + vbExclamation, "Fin de la commande"
End
End If
End Sub

Private Sub UserForm_Initialize()
TextBoxMotPasse.Value = ""
TextBoxMotPasse.SetFocus
End Sub

Private Sub CommandAnnuler_Click()
Unload Me
MsgBox "Votre demande ne peut être exécutée sans le mot de passe.", vbOKOnly + vbExclamation, "Fin de la commande"
End Sub

Private Sub CommandAccord_Click()
'La variable compteur servira à compter le nbre de tentatives.
Static compteur As Byte
compteur = compteur + 1
If TextBoxMotPasse.Text = "texte" Then
Unload Me
Else

'Si c'est la 3e fois que l'utilisateur entre un mot de passe incorrect,
'le programme prend fin
If compteur = 3 Then
MsgBox "Echec dans la saisie du mot de passe." & vbCr & "La commande ne peut être exxécutée", vbOKOnly + vbExclamation, "Mot de passe incorrect"
End
End If

MsgBox "Le mot de passe fourni n'est pas correct.", vbOKOnly + vbExclamation, "Mot de passe incorrect"
TextBoxMotPasse.Value = ""
TextBoxMotPasse.SetFocus
Me.Caption = "Entrez le mot de passe. Tentative " & compteur + 1 & "sur3"
End If
End Sub


Merci beaucoup !

Bon samedi
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Mot de Passe Annuler

Bonjour Terpick, JM, Philippe

Tu as un superbe livre sur le VBA dans Excel, on l'appelle F1 (J'ai juste rajouté:": MsgBox "Vous avez tapé sur Oui") :)

Sinon, il doit y avoir plus simple :eek:. Atendons les spécilaistes :).

Ex:

Code:
Sub MessageBox()
'F1
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Souhaitez-vous continuer?"    ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.
Title = "Démonstration de MsgBox "    ' Définit le titre.
Help = "DEMO.HLP"    ' Définit le fichier d'aide.
Ctxt = 1000    ' Définit le contexte de
                ' la rubrique.
' Affiche le message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then    ' L'utilisateur a choisi Oui.
    MyString = "Oui": MsgBox "Vous avez tapez sur Oui"   ' Effectue une action.
Else    ' L'utilisateur a choisi Non.
    MyString = "Non"    ' Effectue une action.
End If
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Mot de Passe Annuler

Bonjur terpick, MJ13, le fil, le forum

terpick
• En complément de la réponse de MJ13 et en dans le même esprit, une suggestion:
Utilises le moteur de recherche du forum
Mot-clé: msgbox annuler

• Et pour finir un souhait:
Utilises, stp, les balises ci-dessous pour rendre ton message plus agréable à lire
(voir ma signature pour le mode d'emploi)
Merci d'avance.
VB:
Option Explicit

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Me.Hide
        MsgBox "Votre demande ne peut être exécutée sans le mot de passe.", vbOKOnly + vbExclamation, "Fin de la commande"
        End
    End If
End Sub

Private Sub UserForm_Initialize()
    TextBoxMotPasse.Value = ""
    TextBoxMotPasse.SetFocus
End Sub

Private Sub CommandAnnuler_Click()
    Unload Me
    MsgBox "Votre demande ne peut être exécutée sans le mot de passe.", vbOKOnly + vbExclamation, "Fin de la commande"
End Sub

Private Sub CommandAccord_Click()
'La variable compteur servira à compter le nbre de tentatives.
Static compteur As Byte
compteur = compteur + 1
    If TextBoxMotPasse.Text = "texte" Then
        Unload Me
    Else
    
        'Si c'est la 3e fois que l'utilisateur entre un mot de passe incorrect,
        'le programme prend fin
        If compteur = 3 Then
            MsgBox "Echec dans la saisie du mot de passe." & vbCr  & "La commande ne peut être exxécutée", vbOKOnly + vbExclamation,  "Mot de passe incorrect"
            End
        End If
            
        MsgBox "Le mot de passe fourni n'est pas correct.", vbOKOnly + vbExclamation, "Mot de passe incorrect"
        TextBoxMotPasse.Value = ""
        TextBoxMotPasse.SetFocus
        Me.Caption = "Entrez le mot de passe. Tentative " & compteur + 1 & "sur3"
    End If
End Sub
 

terpick

XLDnaute Occasionnel
Re : Mot de Passe Annuler

Bonjour MJ13 !
Merci pour ta réponse. Mais, même si j'ai un superbe livre, mes connaissances pour l'instant n'arrivent pas des fois à tout comprendre.
Notamment, j'ai du mal d'exprimé mes besoins, vu votre réponse :)
En effet, le bogue se produit quand l'utilisateur ne mets rien dans textbox, ensuit il appuie sur annuler. Il voit donc, un msgbox bla bla bla avec un seul choix OK. Normalement, après avoir appuyer sur OK ,

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Me.Hide
MsgBox "Votre demande ne peut être exécutée sans le mot de passe.", vbOKOnly + vbExclamation, "Fin de la commande"
End
End If

doit se mettre en marche, mais rien ne se passe, et l'utilisateur voit la page ou il voulait aller apparaitre.

Je ne sais pas si maintenant mon problème est plus claire mais bon, j'espère :)

Merci encore,

A+

PS:
MJ13,
Merci pour votre macro, mais je ne comprend rien, même si c'est plus facile selon vous. Dans le livre tout est expliqué, j'arrive à comprendre, sinon, je suis tout nouveau dans VBA, un-deux mois, des fois je bloque sur des petites choses :)
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Mot de Passe Annuler

Bonjour à tous,

l'idéal serait que la demande du mot de passe se fasse sur une page vide
ensuite si mot de passe valide, affichage d'une page autorisée à la lecture/modif
mais je ne vois pas cela dans le code

il ne faudra pas oublier avant la fermeture ou sauvegarde, de sélectionner cette page vide afin de la voir lors d'ouvertures ultérieures du classeur

dommage qu'il n'y ait pas de fichier sur lequel on pourrait tester............. ce qui nous éviterait de tout construire ( gain de temps)

à+
Philippe
 

terpick

XLDnaute Occasionnel
Re : Mot de Passe Annuler

Bonjour, Staple 1600

Merci pour vos conseils.

J'essaie de coller la balise, que je ne savais pas comment faire avant
VB:
Option Explicit

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Me.Hide
        MsgBox "Votre demande ne peut être exécutée sans le mot de passe.", vbOKOnly + vbExclamation, "Fin de la commande"
        End
    End If
End Sub

Private Sub UserForm_Initialize()
    TextBoxMotPasse.Value = ""
    TextBoxMotPasse.SetFocus
End Sub

Private Sub CommandAnnuler_Click()
    Unload Me
    MsgBox "Votre demande ne peut être exécutée sans le mot de passe.", vbOKOnly + vbExclamation, "Fin de la commande"
End Sub

Private Sub CommandAccord_Click()
'La variable compteur servira à compter le nbre de tentatives.
Static compteur As Byte
compteur = compteur + 1
    If TextBoxMotPasse.Text = "texte" Then
        Unload Me
    Else
   
        'Si c'est la 3e fois que l'utilisateur entre un mot de passe incorrect,
       'le programme prend fin
       If compteur = 3 Then
            MsgBox "Echec dans la saisie du mot de passe." & vbCr & "La commande ne peut être exécutée", vbOKOnly + vbExclamation, "Mot de passe incorrect"
            End
        End If
           
        MsgBox "Le mot de passe fourni n'est pas correct.", vbOKOnly + vbExclamation, "Mot de passe incorrect"
        TextBoxMotPasse.Value = ""
        TextBoxMotPasse.SetFocus
        Me.Caption = "Entrez le mot de passe. Tentative " & compteur + 1 & "sur3"
    End If
End Sub

Et oui, ça marche!

Merci encore
 

terpick

XLDnaute Occasionnel
Re : Mot de Passe Annuler

Bonjour, phlorent55

Salut, le fil!

J'ai préparé en classeur pour un exemple, mais dedans tout fonctionne ...

Du coup, je vais essayer quand même trouver ma bêtise moi-même :)

Merci à vous tous pour votre aide!

Bon week-end
 

Discussions similaires

Réponses
6
Affichages
190
Réponses
5
Affichages
390
Compte Supprimé 979
C
Réponses
10
Affichages
295
Réponses
2
Affichages
147

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali