Disabler des boutons de UserForm

Bonjour a tous,

J'ignore pourquoi dans un de mes userForm, les commandes pour disabler les boutons et autres du UserForm se mettent en pale mais dans la fenetre propriété, Enable reste a True. Ceci me cause un probleme car les évenement "userForm" ne fonctionne pas.

UserForm4.Show False
désactiverBoutons

Sub désactiverBoutons()
CommandButton3.Enabled = False
CheckBox1.Enabled = False
SpinButton1.Enabled = False
TextBox2.Enabled = False
TextBox3.Enabled = False
Label1.Enabled = False
Label2.Enabled = False
Label3.Enabled = False
End Sub

Bonjour,

Sans le fichier pour vérifier si dans ta procedure il n'y a pas une contradiction, je miserai sur :

UserForm4.Show False
désactiverBoutons

Sub désactiverBoutons()
UserForm4.CommandButton3.Enabled = False
UserForm4.CheckBox1.Enabled = False
UserForm4.SpinButton1.Enabled = False
UserForm4.TextBox2.Enabled = False
UserForm4.TextBox3.Enabled = False
UserForm4.Label1.Enabled = False
UserForm4.Label2.Enabled = False
UserForm4.Label3.Enabled = False
End Sub

Tes objets ne doivent pas savoir sur quel UserForm ils sont. Test comme ça ?

A+

bonjour, j'ai essayer votre code placé sur une feuille et ca n'avait pas d'effet. Par contre si je le met dans le UserForm_initialize, ca fonctionne. Si je le place ailleurs dans le code du UserForm, ca ne fonctionne pas. As-tu une idée du phénomene?

Re,

Tu as la possibilité de partager le fichier sans info personnelle ?

UserForm4.Show False

Pour ensuite desactiver les objets, je trouves deja ça louche.

Edit : Essai d'inverser les deux lignes

UserForm4.Show False
désactiverBoutons

le fichier est tres gros, il faudra peut etre que j'en fasse un petit pour toi.

Oui je sais, ca l'air bizarre comme approche. Le but c'est qu'un UserForm prenne le controle du lecteur multimedia VLC a travers les racourci claviers et puisque le UserForm a des évenements comme Key_press, ca devrait se faire. Par contre j'ai réalisé que si les boutons du userForm sont actif, les évenements du type UserForm_key press ne réagissent pas car les évenements de bouton semble avoir priorité. C'est donc la raison pourquoi je les désactive. Pour le moment je dois les désactiver manuellement dans les propriétés ou dans UserForm _initialize.

Je ne me suis jamais servi d'un UserForm pour VLC, je sais pas si je peux t'aider la dessus.

Mais tu peux tester quelques trucs :

1 - Changer l'ordre de

UserForm4.Show False

désactiverBoutons

2 - Tu es sûr de "UserForm4.show false" ?
et pas un "Userform4.Hide" ou "Unload UserForm4" ?

Je t'ai fait un petit fichier tout simple avec un UserForm et un bouton pour le lancer.

VLC n'est pas important pour mon probleme. Ca fonctionne lorsque je met les instruction dans Initialize mais pour pouvoir changer d'état Enable/disable lorsque le userForm est ouvert, ca ne fonctionne pas et j'ignore pourquoi.

et pour le "userForm1.show false, le false ne fait qu'enlever le mode "modal" , donc cette ligne lance le UserForm1 !

J'utilise Userform.show 0/1 mais c'est la meme chose que False du coup (je pensais que tu souihaitais fermer/masquer l'userform)

La seule facon d'avoir un évenement clavier sur UserForm semble etre lorsque je met les instructions pour disabler dans UserForm_initialize (par défaut c'est ce que je t'ai mis).

J'ai mis en commentaire cette partie (donc le initialize est "vide") et je n'ai donc aucune de ces 3 lignes

UserForm1.CommandButton1.Enabled = False

UserForm1.TextBox1.Enabled = False

UserForm1.SpinButton1.Enabled = False

Et j'ai ce message (quand les propriétés TabStop sont False sur tes 3 objets)

image

=> donc pas besoin de disabler j'imagine mais si tu veux le faire :

Sur la feuille 1 l'ordre devrait etre

Sub test()
'Dans cette ordre c'est OK (voir le pas a pas de la macro avec touche F8)
UserForm1.CommandButton1.Enabled = False
UserForm1.TextBox1.Enabled = False
UserForm1.SpinButton1.Enabled = False

UserForm1.Show False
End Sub

Et chez moi ton bouton a l'interieur de l'userform a toujours fonctionné (Enable est a bien a False une fois le bouton enclenché)

A moins que je n'ai rien compris au probleme, le soucis doit venir d'une autre partie de ton code non ?

ah que je suis content, ca fonctionne bien et pas besoin de disabler les boutons. Si j'ai bien compris, Tab stop = faux était la solution. A quoi sert ce parametre?

Donc juste besoin de mettre chaque bouton avec ce parametre a "faux" a chaque fois que je veux que l'évenement UserForm1_KeyPress réagisse aux touche clavier?

Sub test()
UserForm1.Show False
'Dans cette ordre c'est OK (voir le pas a pas de la macro avec touche F8)
UserForm1.CommandButton1.Enabled = False
UserForm1.TextBox1.Enabled = False
UserForm1.SpinButton1.Enabled = False
End Sub

J'ai meme essayer en mettant UserForm1.Show False en premier et ca fonctionne aussi.

Le TabStop c'est passe d'un objet a un autre qui est en "True" avec la touche tabulation.

L'ordre de passage d'un objet a un autre est la propriété "TabIndex" qui s'incrémente a chaque nouvel objet mais qui peut etre modifiable.

Rechercher des sujets similaires à "disabler boutons userform"