cs_kouki69
Messages postés95Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention28 août 2015
-
7 juin 2006 à 10:14
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
8 juin 2006 à 17:36
Bonjour,
Voilà, j'ai créé dans un userform un bouton "NEXT" que je souhaite avoir grisé tant que toutes les cellules( textbox, ComboBox ...) ne sont pas remplies. Lorsque toutes les cellules du userform sont remplies, à ce moment là, le bouton "NEXT" n'est plus grisé et est donc actif pour passer au userform suivant.
J'ai déjà utilisé ce principe dans un userform qui ne comptait que deux cellules à remplir et j'ai utilisé les lignes suivantes et qui fonctionne bien :
Private Sub speed_Change()
If UserForm1.speed.Value = "" Then
UserForm1.CommandButton1.Enabled = False
Else
If UserForm1.Textetoi.Value = "" Then
UserForm1.CommandButton1.Enabled = False
Else
CommandButton1.Enabled = True
End If
End If
MAINTENANT, j'ai une trentaine de cellule à remplir et je ne crois pas que les lignes ci-dessus soit la meilleure façon de faire !!!
N'y a t-il pas moyen de dire : Si toutes les cellules du userform ne sont pas remplies, alors bouton grisé, autrement, bouton actif !!
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 8 juin 2006 à 16:05
Salut,
Premiere chose:
Si le Userform5 est le seul à utiliser ta procédure boutongrisé, tu peux la mettre directement dans le code UserForm5 plutot que de la mettre dans un module.
Ensuite.dans le code du UserForm5 Tu n'appelles cette procédure qu'une fois.
Alors qu il l'appellé dans l'événements change de tout tes TextBox.
Question,
Dans la Section général par exemple Result doit etre dégrisé lorsque tout les champs sont remplis c'est ca (textbox + ComboBox?).
Ce que je veux dire c'est est ce qu en plus il fautr aussi remplir les section Suction 1rst et Discharge 1st?
@+, Julien Pensez: Moteur de Recherche, Réponse Acceptée
demon_renard
Messages postés34Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention23 juin 2006 8 juin 2006 à 17:13
Salut jrivet,
Simple question de débutant à érudit, si on supprime le contenu d’une textBox ou d’une comboBox du milieu (pas la dernière qui est surveillé) cela ne va-t-il pas laisser la valeur du bouton à true ?
cs_kouki69
Messages postés95Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention28 août 2015 8 juin 2006 à 17:17
CA MARCHE, en fait j'aurai du appeller ton code dès le début dans chaque textbox et combo.
Merci JRIVET pour ton aide précieuse.
Peut-être à une prochaine fois pour un nouveau problème
Salut
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 8 juin 2006 à 17:22
Salut,
Non car si tu regarde bien , dès que la boucle trouve un contenu vide elle met la variable a FALSE donc forcement le bouton redeviendra grisé.
D'ailleurs on pourrait améliorer ca de la facon suivante
If (TypeOf Ctrl Is MSForms.TextBox) Or (TypeOf Ctrl Is MSForms.ComboBox) Then
'Si le contenu du textbox est vide
If Ctrl.Text = "" Then
CmdEnable = False
Exit For 'On sort de la boucle car on a trouve un controle vide donc plus besoin de continuer
End If
D'ailleurs le code que je propose fait exactement la meme chose que la boucle que tu as propose
If TypeOf Ctrl Is MSForms.TextBox Then
'Si le contenu du textbox est vide If Ctrl.Text "" Then i i + 1 ' **
End If
Next
If i = 0 Then ' **
CommandButton3.Enabled = True ' **
Else ' **
CommandButton3.Enabled = False ' **
End If
Si i ne vaut pas 0 c'est donc que l'on est passer par i = i + 1 (Donc par CmdEnable = False)
Tu remarqueras qu 'une fois qu 'il est a FALSE rien ne peut le remmettre a TRUE
Voila j'espere avoir ete explicatif
@+, Julien Pensez: Moteur de Recherche, Réponse Acceptée