Cocher un Chekbox à l’ouverture du userform

lanoe

XLDnaute Occasionnel
Bonjour,

J’ai un Userform qui me sert de barre de commande avec plusieurs boutons qui ouvrent d’autres Users. La, pas de problème.
Je souhaite sur un bouton qu’il ouvre le user, mais en plus, pour gagner du temps, qui coche un chekbox. Je pensais que le code ci-dessous fonctionnerait mais….

Private Sub Commande1_Click()
USF_MOD.Show
USF_MOD.CheckBox5.Value = True
End Sub

Ou est le probleme?

lanoe
 

Jam

XLDnaute Accro
Re : Cocher un Chekbox à l’ouverture du userform

salut Lanoe,

Mets ce code directement dans ton userform et pas dans le bouton qui lance l'ouverture du USF.
Code:
Private Sub UserForm_Initialize()
    Me.CheckBox5.Value = True
End Sub

Bon courage
 
G

Guest

Guest
Re : Cocher un Chekbox à l’ouverture du userform

bonsoir Lanoe,

Essaie ceci:

Code:
Private Sub Commande1_Click()
USF_MOD.CheckBox5.Value = True
USF_MOD.Show
End Sub
Après affichage d'un userform en mode Modal la procédure attend que le userform soit fermé pour continuer.

A+

C'est pourquoi il faut modifier avant de l'afficher.
 
G

Guest

Guest
Re : Cocher un Chekbox à l’ouverture du userform

Jam,

Ta remarque, est relativement exacte!

UserForm_Initialize, comme son nom l'indique initialise seulement les contrôles mais il est souvent necessaire d'avoir à modifier un paramètre de contrôle en cours d'execution, comme on le ferait d'une variable.

Et la demande de notre ami Lanoe, apparement va dans ce sens.

A+
 

Jam

XLDnaute Accro
Re : Cocher un Chekbox à l’ouverture du userform

Re Hasco,

Je me permet d'insister, car je suis un peu puriste à l'occasion :) et parce que tu as écrit "relativement" exact :D :D :D

Initialiser signifie définir un état pour pouvoir commencer. C'est bien de cela qu'il s'agit et non de modifier un état. Subtil ! Donc c'est bien à cela que sert cet événement. Et j'irai même plus loin dans la démonstration:
- Il existe 2 méthodes pour lancer un USF: Load et Show
- Load charge l'USF en mémoire sans l'afficher, contrairement à Show
- Le premier événement qui se lance avant l'affichage de l'USF, et une seule fois, est Initialize ! Nous avons donc la séquence...Load...initialize...Show (même en utilisant Usf.Show).

Et aussi contrairement à ce que tu dis dans Initialize on n'initialise pas que des controls mais tout ce qu'on veux (variables, cellules, system...).

Enfin, autre subtilité que tu omets, c'est que le mode modal est l'état par défaut mais qu'on peut tout de même lancer un USF en mode non modal avec UserForm.Show vbmodeless

Et une petite dernière: admettons que l'USF puisse être lancée depuis plusieurs "endroits" différents...il faudrait alors écrire autant de fois le bout de code l'initialisant quand il est si simple de le mettre une seule fois dans Initialize :D

Sur ces bonnes petites paroles, bonne soirée.


Hé, lanoe, tu peux choisir la méthode qui te fait plaisir tant que ça marche, en fait c'est le plus important.
 

Lii

XLDnaute Impliqué
Re : Cocher un Chekbox à l’ouverture du userform

Bonjour Tous,

Tous les Débutants qui se lancent dans la création d’USF devraient se référer à ta présentation Jam !

J’ajoute deux petites choses :

Il est préférable de commencer par le code de l’évènement « Initialize ».
Ce code devrait apparaître en premier et c’est rarement le cas dans les fichiers joints.
On sait ainsi d’où l’on part (en programmation cela est primordial) !

D’autre part, j’ai souvent vu Excel se figer et ne plus répondre quand la propriété de l’userform « ShowModal » est à True (à la création de l’objet).
Evitez par exemple, dans ce cas, d’inclure une ligne du genre ActiveSheet.PrintPreview ! Vous seriez quittes à passer par le Gestionnaire des tâches pour vous en sortir.
Je mets cette propriété à False dès le début, et la modifie par la suite si besoin est.
De plus, dans ce cas, on peut aussi faire des allers et retours entre le Classeurs et l’USF et mieux contrôler le déroulement des actions.

Tu as aussi raison de dire que, tant que cela marche, chacun fait comme il lui plait : ce qui est simple pour les uns ne l’est pas forcément pour d’autres !
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 358
Membres
103 528
dernier inscrit
hplus