Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Msgbox de trop !

6 réponses
Avatar
JPMonnier
Bonsoir,
Dans cette procédure, j'ai le message qui se répète en arrivant sur Exit sub
Cette proc fait partie d'un Userform
'ARB1 = CheckBox

Private Sub ARB1_Click()
If ARB1 = True Then
Me.JOU1.Font.Underline = True
Me.JOU1.Font.Italic = True
Else
Me.JOU1.Font.Underline = False
Me.JOU1.Font.Italic = False
End If
If ARB1.Caption = "Na" Then
ARB1 = False 'a cette ligne, il repart en début de proc
MsgBox "Joueur non JO" ' il m'affiche le Msgbox
Exit Sub 'Arrivé sur cette ligne, il me réaffiche le Msgbox une 2ème
fois
End If
End Sub
Ou se trouve le bug ??
Merci d'avance
--
Cordialement
jpmonnier-no-spam@neuf.fr

6 réponses

Avatar
Daniel.C
Bonjour.
"ARB1 = False" redéclenche la procédure. Quand l'exécution de la seconde est
achevée, la macro reprend la première, là où elle l'a laissée, c'est à dire
au msgbox.
Cordialement.
Daniel
"JPMonnier" a écrit dans le message de news:
%
Bonsoir,
Dans cette procédure, j'ai le message qui se répète en arrivant sur Exit
sub
Cette proc fait partie d'un Userform
'ARB1 = CheckBox

Private Sub ARB1_Click()
If ARB1 = True Then
Me.JOU1.Font.Underline = True
Me.JOU1.Font.Italic = True
Else
Me.JOU1.Font.Underline = False
Me.JOU1.Font.Italic = False
End If
If ARB1.Caption = "Na" Then
ARB1 = False 'a cette ligne, il repart en début de proc
MsgBox "Joueur non JO" ' il m'affiche le Msgbox
Exit Sub 'Arrivé sur cette ligne, il me réaffiche le Msgbox une 2ème
fois
End If
End Sub
Ou se trouve le bug ??
Merci d'avance
--
Cordialement



Avatar
MichDenis
En passant, j'ai omis de te faire cette suggestion si tu tiens à conserver cette façon de faire :


Private Sub ARB1_Click()
Static Ok As Boolean

If Ok = True Then
Ok = False
MsgBox "Joueur non JO" ' il m'affiche le Msgbox
Exit Sub
End If
If ARB1 = True Then
M Me.JOU1.Font.Underline = True
Me.JOU1.Font.Italic = True
Else
Me.JOU1.Font.Underline = False
Me.JOU1.Font.Italic = False
End If
If ARB1.Caption = "NA" Then
Ok = True
ARB1 = False 'a cette ligne, il repart en début de proc
End If
End Sub
Avatar
Modeste
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

Et avant que Modeste s'énerve ;-))

Par défaut le checkbox à 2 états mais si tu mets
la propriété "TripleState à true" et bien il y a 3



;o)))
tu l'as échappée belle !!!
le temps d'aller arroser les légumes ...

--
@+
;o)))
Avatar
MichDenis
Avatar
JPMonnier
Merci pour toutes ces réponses,
Je sais MichelDenis que je ne suis pas au top, c'est pour cela que je suis
ici !!
Quand je parle de beug,c'est bien de moi qu'il vient, je m'en doutais !!
Je comprends bien aussi et ça se voit, en déoulement pas à pas, que le
changement de l'état de ma checkBox est automatique, qu'il soit déclenché
par la procèdure ou par un click ! Je ne suis pas idiot à ce point, je
pensais qu'il y avait une solution pour contourner
le problème !
Du calme, je vais aussi aller arroser mes plante !
--
Cordialement




"MichDenis" a écrit dans le message de
news:%
| Ou se trouve le bug ??

Un checkbox à 2 états : Vrai Or False ou -1 et 0 respectivement

À chaque fois que tu cliques sur un checkbox, il ne te demande pas la
permission,
il change automatiquement de valeur Vrai pour Faux ou Faux pour Vrai

En fait, au milieu de ta procédure, tu décides de modifier son État...
c'est
exactement comme si tu avais cliqué à nouveau desssus, il repart au
début et excéute le code à nouveau !

Le bug ? C'est plutôt le programmeur qui ne sait pas si le checkbox
doit être à true or à false ? ;-))

Si tu utilise ceci :
If ARB1.Caption = "NA" Then
C'est proablement qu'il doit y avoir quelque part un autre bout de code
qui modifie le caption du checkbox ... non ? Pourquoi ne pas trouver
une appellation et lui foutre la paix et jouer simplement avec l'état de
ce dernier Vrai ou Faux ?






"JPMonnier" a écrit dans le message de news:
%
Bonsoir,
Dans cette procédure, j'ai le message qui se répète en arrivant sur Exit
sub
Cette proc fait partie d'un Userform
'ARB1 = CheckBox

Private Sub ARB1_Click()
If ARB1 = True Then
Me.JOU1.Font.Underline = True
Me.JOU1.Font.Italic = True
Else
Me.JOU1.Font.Underline = False
Me.JOU1.Font.Italic = False
End If
If ARB1.Caption = "Na" Then
ARB1 = False 'a cette ligne, il repart en début de proc
MsgBox "Joueur non JO" ' il m'affiche le Msgbox
Exit Sub 'Arrivé sur cette ligne, il me réaffiche le Msgbox une 2ème
fois
End If
End Sub
Ou se trouve le bug ??
Merci d'avance
--
Cordialement




Avatar
JPMonnier
Merci MichelDenis de suivre à ce point mes messages !
Rassure toi, tes réponses sont très claires !
Je ne me déprécie pas ! j'ai réalisé des projets tres intéressants qui
donnent entière satisfaction aux utilisateurs !
j'ai souvent travaillé, depuis plus de 20 ans sur les tableurs, depuis les
macros de Lotus ou autres en m'épanouissant sur VBA EXCEL depuis + de 12 ans
Ta dernière solution me convient tout à fait, je voulais juste souligner,
par mon dernier message que je n'étais pas un super pro et que si ce forum
avait existé il y a 15 ans, j'aurais certainement évolué plus rapidement !
Bien amicalement
Jean Pierre



"MichDenis" a écrit dans le message de
news:%
| que je ne suis pas au top
***Je n'ai pas rencontré personne ici qui le soit !

| Quand je parle de beug,c'est bien de moi qu'il vient
*** Ne te déprécie pas toi même, laisse les autres le faire s'il le veule
!
;-)

|je pensais qu'il y avait une solution pour contourner le problème !
*** Cette proposition ne convien pas ? Qu'est-ce que ne te plaît pas ?

'---------------------------
Private Sub ARB1_Click()
Static Ok As Boolean

If Ok = True Then
Ok = False
MsgBox "Joueur non JO" ' il m'affiche le Msgbox
Exit Sub
End If
If ARB1 = True Then
M Me.JOU1.Font.Underline = True
Me.JOU1.Font.Italic = True
Else
Me.JOU1.Font.Underline = False
Me.JOU1.Font.Italic = False
End If
If ARB1.Caption = "NA" Then
Ok = True
ARB1 = False 'a cette ligne, il repart en début de proc
End If
End Sub
'---------------------------