XL 2010 [RESOLU] Eviter affichage Msgbox à 2 reprises

  • Initiateur de la discussion Initiateur de la discussion cathodique
  • 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 !

cathodique

XLDnaute Barbatruc
Bonjour,

Je viens vers vous pour un petit problème. J'avoue que je suis un peu perdu.
Je voudrai vider une textbox si aucuns boutons coché avec un message avertissant l'utilisateur.
J'arrive à le faire mais le message s'affiche à 2 reprises.
J'ai pensé à une variable booléenne mais j'avoue que je n'ai pas trouvé l'astuce pour l'utiliser.
VB:
Option Explicit
Private Sub TextBox1_Change()
If Opt_Ajouter.Value = False And Opt_Corriger.Value = False And Opt_Supprimer.Value = False Then
TextBox1 = "": TextBox1.SetFocus
MsgBox "Choisir une Option"
End If
End Sub
En vous remerciant.
 

Pièces jointes

Solution
Bonjour cathodique, le forum,

Oui il faut une variable booléenne Static :
VB:
Private Sub TextBox1_Change()
Static flag As Boolean
If flag Then Exit Sub
If Not (Opt_Ajouter Or Opt_Corriger Or Opt_Supprimer) Then
flag = True: TextBox1 = "": flag = False: TextBox1.SetFocus
MsgBox "Choisir une Option"
End If
End Sub
A+
Bonjour cathodique, le forum,

Oui il faut une variable booléenne Static :
VB:
Private Sub TextBox1_Change()
Static flag As Boolean
If flag Then Exit Sub
If Not (Opt_Ajouter Or Opt_Corriger Or Opt_Supprimer) Then
flag = True: TextBox1 = "": flag = False: TextBox1.SetFocus
MsgBox "Choisir une Option"
End If
End Sub
A+
 

Pièces jointes

Dernière édition:
Bonjour tous,
Une autre solution en utilisant le KeyUp et non le Change
Bruno

VB:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Opt_Ajouter.Value = False And Opt_Corriger.Value = False And Opt_Supprimer.Value = False Then
TextBox1 = "": TextBox1.SetFocus
MsgBox "Choisir une Option"
End If
End Sub
 
Bonjour cathodique, le forum,

Oui il faut une variable booléenne Static :
VB:
Private Sub TextBox1_Change()
Static flag As Boolean
If flag Then Exit Sub
If Not (Opt_Ajouter Or Opt_Corriger Or Opt_Supprimer) Then
flag = True: TextBox1 = "": flag = False: TextBox1.SetFocus
MsgBox "Choisir une Option"
End If
End Sub
A+
Bonjour Job75😉,

C'est parfait. Merci beaucoup, tu me permets d'avancer.
Stp, une dernière question: Static signifie que la variable garde toujours le même état (vrai/faux)?
Encore merci.
 
Bonjour tous,
Une autre solution en utilisant le KeyUp et non le Change
Bruno

VB:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Opt_Ajouter.Value = False And Opt_Corriger.Value = False And Opt_Supprimer.Value = False Then
TextBox1 = "": TextBox1.SetFocus
MsgBox "Choisir une Option"
End If
End Sub
Bonjour Youky(BJ)😉,

C'est aussi parfait pour moi. Merci beaucoup.
Pour être honnête, tu viens de me faire découvrir l'utilisation du KeyUp.
Encore merci.
 
- 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
13
Affichages
614
Retour