Bloquer evenement userform

cathodique

XLDnaute Barbatruc
Bonsoir:),

Je voudrais vérifier les codes saisis dans la textbox1, il faut qu'ils aient 4 chiffres et commencer par 8 ou 9
par rapport aux boutons d'option (Débit actif m=8 sinon m=9).
Un message avise l'utilisateur dans le cas où le code est non conforme aux conditions.
Cependant, l'utilisateur pourrait changer d'avis après avoir saisi un code, et vouloir fermer l'userform.
Le message s'affiche inexorablement.
Comment résoudre ce problème?
Avec mes remerciements par avance.
 

Pièces jointes

  • Fermer Formulaire.xlsm
    25.5 KB · Affichages: 9

Jacky67

XLDnaute Barbatruc
Bonsoir:),

Je voudrais vérifier les codes saisis dans la textbox1, il faut qu'ils aient 4 chiffres et commencer par 8 ou 9
par rapport aux boutons d'option (Débit actif m=8 sinon m=9).
Un message avise l'utilisateur dans le cas où le code est non conforme aux conditions.
Cependant, l'utilisateur pourrait changer d'avis après avoir saisi un code, et vouloir fermer l'userform.
Le message s'affiche inexorablement.
Comment résoudre ce problème?
Avec mes remerciements par avance.
Bonjour,
Une proposition en Pj
 

Pièces jointes

  • Fermer Formulaire.xlsm
    32.9 KB · Affichages: 3

cathodique

XLDnaute Barbatruc
Bonjour,
Une proposition en Pj
Bonjour Jacky67;), Le Forum:)

J'avoue ton astuce pour contourner le problème est très judicieuse. Je n'y avais pas pensé.
Cependant, connais-tu un moyen pour inhiber les évènements suivants qui utilisent 'Cancel':
  • TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  • TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Merci beaucoup, je vais essayer d'adapter ton code sur mon véritable fichier.

Bonne journée.;)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans un petit UserForm muni d'une TextBox j'ai écris ceci :
VB:
Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   MsgBox "Exit"
   End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   MsgBox "QueryClose"
   End Sub
Observez l'ordre d'apparition des message et donc d'exécution de évènements.
En déduisez vous une solution possible ?
 

Dranreb

XLDnaute Barbatruc
Moi j'ai vu celle ci :
VB:
Option Explicit
Private FermetureEnCours As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If FermetureEnCours Then Exit Sub
   If TextBox1.Text <> "" Then Exit Sub
   MsgBox "Champ obligatoire"
   Cancel = True
   End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   FermetureEnCours = True
   End Sub
 

cathodique

XLDnaute Barbatruc
Bonjour.
Dans un petit UserForm muni d'une TextBox j'ai écris ceci :
VB:
Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   MsgBox "Exit"
   End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   MsgBox "QueryClose"
   End Sub
Observez l'ordre d'apparition des message et donc d'exécution de évènements.
En déduisez vous une solution possible ?
Bonjour Dranreb:),

Merci pour ton aide. Cependant, j'ai rajouté un bouton pour fermer l'userform.
Mes constations:
  • fermeture à partir de la croix c'est QueryClose qui se déclenche en priorité
  • fermeture par le bouton c'est Textbox1_exit qui se déclenche en priorité.

Donc mon souci est l'évènement Exit. J'avoue que je suis perdu pour inhiber cet évènement.

En tout cas merci beaucoup pour ton exemple.

Bonne journée.
 

cathodique

XLDnaute Barbatruc
Moi j'ai vu celle ci :
VB:
Option Explicit
Private FermetureEnCours As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If FermetureEnCours Then Exit Sub
   If TextBox1.Text <> "" Then Exit Sub
   MsgBox "Champ obligatoire"
   Cancel = True
   End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   FermetureEnCours = True
   End Sub
Encore merci Dranreb, mais je pense que c'est une mauvaise idée que j'ai eu ou plutôt mon approche est fausse.
Car avec ton code, l'utilisateur est obligé de remplir la textbox.
Je vais donc mettre la vérification de la textbox en utilisant un bouton.

Merci beaucoup.
 

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 855
Membres
102 688
dernier inscrit
Biquet78