Userform et checkbox : ça boucle

Hello tout le monde...

Pourtant pas si novice que ça en VBA, je butte sur un truc à la con.

Le fichier me sert à gérer des stats pour des matchs de basket. J'ai un tableau avec les stats, et un bouton qui ouvre un userform pour saisir les stats.

Dans ce userform, j'ai des cases à cocher, pour me permettre de sélectionner les stats à compléter durant le match (affiche/cache un bouton et masque une colonne).

Je sauvegarde l'état de ces cases à cocher dans une feuille cachée, de façon à pouvoir remettre leur état à l'identique au moment de la fermeture du userform.

Mon problème, le voici : j'utilise UserForm_Initialize pour lire l'état des cases à cocher et le cocher si besoin. Mais en faisant ça, j'actionne CheckBox.change ou CheckBox.clic (j'ai essayé les 2).

J'en suis donc à boucler sur moi même : j'ouvre mon userform, qui coche à cause de la sauvegarde dans la feuille cachée, ce qui provoque un clic/change, qui va rentrer à nouveau dans le clic/change et ça tourne en boucle.

Une idée ???

J'avoue m'arracher les cheveux... Merci par avance.

Guillaume

Bonsoir,

Difficile de se prononcer sans voir l'ensemble ! En programmant l'Initialize on tient compte en principe des évènements que l'on va déclencher dès le départ... Tout dépend aussi du contenu de tes procédures d'évènement. Il faudrait voir en quoi elles posent problème dans le contexte...

Tu as toujours la ressource, si cela ne peut se régler autrement d'asservir les évènements posant problèmes à une variable booléenne (niveau module) laquelle serait évidemment à False à l'ouverture (les évènements ne sont pas exécutés), et que tu passes à True en d'Initialize...

Cordialement.

Bonsoir,

en effet Maréchal, les contrôles sont insensibles à Application.EnableEvents et quel dommage !

du coup, comme vous dites il faut passer par une variable "interrupteur" booléenne :

Private Sub TextBox1_Change()
    If Mise_à_Jour = False Then
    'action effectuée si le TextBox1 est modifié
    End If
End Sub

Private Sub UserForm_Initialize()
    Mise_à_Jour = True
    TextBox1.Value = "On met à jour la TextBox, mais comme on est à True alors ce n'est qu'une mise à jour pas d'action"
    Mise_à_Jour = False
End Sub

Voilà en gros ce qu'à dit le Maréchal !

Mais moi je comprend la mise à jour à l'inverse !

@ bientôt

LouReeD

Merci LouReed ! Mais il serait mieux de voir ça dans le fichier concerné...

Rechercher des sujets similaires à "userform checkbox boucle"