Lié une checkbox vec une textbox

Signaler
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
-
DX90
Messages postés
40
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
14 septembre 2018
-
Bonjour à tous,
J'ai un petit soucis d'écriture de code :

J'ai deux userform ( formulaire et userform1), sur l'un d'eux j'ai une liste de textbox, sur l'autre une liste de checkbox.

J'aimerai qu'un clic sur une checkbox en particulier sur mon userform1 fasse apparaitre ma text box particulière sur mon formualaire.

J'essaie plusieurs choses qui ne font pas bloquer mon système, je n'ai aucun message d'erreur, mais n'est pas non l'apparition de ma textbox. Est du a une liaison entre mes deux userform ou est ce autre chose?

Si quelqu'un pouvait m'aider...

Merci d'avance!!

20 réponses

Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

Bonjour,

alors est ce que tes 2 userform sont bien ouvert en meme temps ou alors tu ferme ton premier userform avant d'ouvrir le deuxieme ce qui aurait pour conséquence de ne pas garder en memoire la valeur de ta checkbox de ton 1er userform.

montre nous ta procédure d'initialisation et activation de ton userform sur lequel tu as tes texbox.

De plus tes textbox ont elles leur proprièté
"VISIBLE" a "FALSE" par defaut ,et a tu prévu les 2 cas dans ton code :
- checkbox valeur a "TRUE"
- checkbox valeur a "False"

sans code sous les yeux il est difficile de cerner le problème car en fait on ne sait rien d'ou pourrait provenir ton problème.

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
40
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
14 septembre 2018
1
Bonjours,

Oui sans la source c'est compliqué, mais bon, au pif je dirais que tu voudrais l'afficher donc essaye ca:

Dans checkbox1, va sur le paramètre CheckedChanged et entre ce code:

If CheckBox1.Checked then
        formulaire.txtb1.Show()
'choisie la méthode qui va avec ton code
        formulaire.txtb.Visible = True
else
        formulaire.txtb1.hide()
'choisie la méthode qui va avec ton code
       formulaire.txtb.Visible = False
end if
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Je pense que le code devrait fonctionner, par contre il est vrai que je dois fermer mon userform1 pour faire apparaitre mes textbox dans mon formulaire, il faudrait donc que je puisse charger les informations c'est cela?

Par contre je ne peux pas vous envoyer ma procédure: c'est malheureusement confidenciel, comment puis-je vous aider afin que vous puissiez moi meme m'aider.... ?

Merci de vos réponses et du temps que m'avez consacré...
Messages postés
56
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
29 octobre 2010

t'as un choix très simple qui consisterait à n'avoir qu'un seul formulaire. tu cache et montre la partie que tu as besoin.
La deuxième solution c'est au moment de l'apparition du deuxième formulaire. Garder le premier formulaire ouvert, réaliser les tests de valeur sur le premier formulaire, cacher ou montrer les champs et enfin fermer le premier formulaire pour laisser la main à l'utilisateur.

la deuxième méthode est la plus propre. la première est la solution de facilité, et rapide à mettre en place.


et une victoire de plus pour Mr canard
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Je ne peux malheureusement pas faire ce que tu me conseille :
Je ne peux pas cacher ma boite de dialogue puisque c'est en fonction de ce que l'utilisateur va cocher que les text box doivent apparaitre, or comment pourra-t-il choisir si il n'a pas sa boite de dialogue.

La deuxième solution est deja ce que je fais : a partir d'un bouton de commande sur le premier formulaire, la deuxième formulaire apparait.
Le truc que je ne fais pas encore c'est les test de valeur, tout simplement parce que : Au secours! c'est quoi des test de valeur?

Et oui, je débute : j'ai commencé lundi dernier sans prendre de cours, je vous laisse imaginer la débacle!
Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

Bonjour à tous,

Alors ce que tu peut faire, dans ton userform1, tu y a tes checkbox avec ton bouton qui fera appel a ton formulaire sans fermer le userform1 (pas de "Unload Userform1 ou Unload Me").

Puis ton le code de ton formulaire "Private Sub UserForm_Initialize()" tu fais une boucle sur toutes les checkboxs et en fonction si elle sont cocher tu affiche ou non les textbox puis une fois ce test effectuer, tu ferme le Userform1 par Unload userform1 .
Ce qui te permettrera de garder en memoire la valeur des checkbox .

exemple de code a adapter :
Dim i as integer
For i = 1 to x ' x étant le nombre de checkboxs
'test si la checkbox est checker alors la textbox correspondante est visible
If userform1.Controls("Chexckbox" & i).Value = True then formulaire.Controls("TextBox" & i).Visible=True
'Test si la checkbox n'est pas checker alors la textbox correspondant n'est pas pas visible
If userform1.Controls("Chexckbox" & i).Value = False then formulaire.Controls("TextBox" & i).Visible=False
Next i
userform1 Unload

le code ci-dessus suppose que les checkbox rattaché au textbox porte le même numéro
ex : la CheckBox1 avec la Textbox1 et ainsi de suite.

Le fait de faire le test sur les 2 cas possible checkbox checker ou pas te permet de ne pas avoir a te soucier si les textbox sont visible ou pas par default.

De plus si tu as besoin de faire un bouton de retour sur ton formulaire vers ton userform1 tu peux te servir du meme code en inversant le test si la textbox est visible alors la checkbox est checker et vice versa.

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Mrci pour ton aide!
J'ai compris ce que je devais faire,
mais... Ca ne marche pas... comprend pas pourquoi...
J'ai bien inscrit ton code dans mon userform contenant les checkbox, j'ai essayer de la mettre dans le formulaire aussi au cas ou... Mais ce ne marche pas

"
Sub userform1_activate
Dim i as integer
For i = 82 to 287
If userform1.Controls("Chexckbox" & i).Value = True then formulaire.Controls("TextBox" & i).Visible=True
If userform1.Controls("Chexckbox" & i).Value = False then formulaire.Controls("TextBox" & i).Visible=False
Next i
userform1 Unload
end sub
"

Je viens de renommer tous mes chexlbox pour qu'il soit en parallèle avec mes textbox mais idem rien n'y fait...
Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

Je viens de corriger le code
un x de trop a che(x)ckbox
et Unload Userform1 et non Userform1 Unload

De plus le code est a mettre dans la procédure d'initialisation et non pas d'activation car l'initialisation est faite avant l'affichage du formulaire et donc ne genere pas d'erreur sur la proprièté modal ou non.

place le code dans le userform qui a les textboxs.
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To x ' x étant le nombre de checkboxs
'test si la checkbox est checker alors la textbox correspondante est visible
If UserForm1.Controls("Checkbox" & i).Value True Then formulaire.Controls("TextBox" & i).Visible True
'Test si la checkbox n'est pas checker alors la textbox correspondant n'est pas pas visible
If UserForm1.Controls("Checkbox" & i).Value False Then formulaire.Controls("TextBox" & i).Visible False
Next i
 Unload UserForm1

End Sub

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Je suis désolée de te dire ca mon pauvre developpeur en herbe, mais ca ne marche toujours...
Pire! je n'ai aucun message d'alerte...
Le langage VBA ne m'aime pas on dirait...
Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

On est bien d'accord que sur le UserForm1 tu as tes checkboxs et sur le formulaire tes textboxs?

Si c'est bien comme çà alors le code est à mettre dans la procédure Private Sub UserForm_Initialize() du formulaire qui a les textbox.

tu ne peut tu pas nous mettre ta procedure complete mais peut au moins mettre le code de ton bouton d'appel et celle de l'initialisation du formulaire ou tu as tes textbox.
essaie aussi de faire executer ta macro en pas a pas en inserant un point d'arret à la premiere ligne de code de ton bouton d'appel puis avec la touche F8 faire le déffilement de ta procédure et voir comment réagit la macro.

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To x ' x étant le nombre de checkboxs
'test si la checkbox est checker alors la textbox correspondante est visible
If UserForm1.Controls("Checkbox" & i).Value True Then formulaire.Controls("TextBox" & i).Visible True
'Test si la checkbox n'est pas checker alors la textbox correspondant n'est pas pas visible
If UserForm1.Controls("Checkbox" & i).Value False Then formulaire.Controls("TextBox" & i).Visible False
Next i
Unload UserForm1

End Sub

private sub commandbutton1_click()
unload ME
end sub

Private sub commandbutton4_click()
Userform1.show
end sub


Je sais pas si ca va t'aider. J'ai fait le "pas à pas" et pareil il me fait bien ma procédure sans soucis seulement je me retrouve avec une page blanche a la fin de celle-ci...
Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

toutes ces procedures sont dans le meme userform ?
private sub commandbutton1_click() correspont a quitter et private sub commandbutton4_click() pour le passage du formulaire avec les textbox vers le userform avec les checkbox?


Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Formulaire : userform_initialize
commandbutton 4 sert a faire venir le userform 1

Userform 1 : commandbutton 1 sert à quitter le userform lorsqu'il a cliquer sur les checkbox

Ca t'aide un peu?
Je suis désolée de t'embeter avec ca...
Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

le Formulaire c'est l'userform ou tu as tes textbox ou tes checkbox

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

En relisant ta derniere reponse , en fait

ton userform avec les textbox s'affiche de la tu clique sur un bouton qui t'affiche le userform avec les checboxs qui une fois que tu a rempli tu clique sur un bouton pour fermer le userform avec les checbox et donc revenir sur l'userform avec les textbox?

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
40
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
14 septembre 2018
1
Désolé Nico mais on dirais du vb6.
Le paramètre Unload n'est plus en vb.net
Te ne peux pas écrire form1.unload

Bref au pire tu va dans le propriété de ton application.
Dans Paramètre tu ajoute le nom checked avec le type Boolean

Et tu met le code suivant sur ta checkbox

If checkbox1.checked then
my.settings.checked = true
my.settings.save
else
my.settings.checked = false
my.settings.save


Et à ton Userform ou formulaire, je sait plus lequel est le second. (Form_Load)
Tu met:
form1.hide
if my.settings.checked true then checkbox1.checked=true


Et pour la fermeture de la 2nd form tu met:
 my.settings.checked = false
my.settings.save
me.close


Voilà ca fait une bonne méthode compliqué, mais au moins ca marche, après si ta plusieurs checkbox il y à d'autre solution, mais si t'en à qu'une utilise celle la.
Messages postés
27
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
16 février 2011

oh oui toutes mes excuses au forum ET A ELOYER

merci DX90 de ne pas m'avoir laisser dans mon erreur.
Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
Messages postés
40
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
14 septembre 2018
1
C'est pas grave, mais laisse poussez ton herbe plutôt que la fumer
Messages postés
8
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Hello tout le monde!

Désolée de vous avoir laissé tomber, mais je vous écris de ma boite professionnel et.... C'etait le week end!!
Sinon oui Développeur en herbes, tu as bien compris ma méthode, et DX90, je veux bien essayer ta méthode, mais j'ai plusieurs check box....

Enfin merci a vous deux d'avoir cherché pour moi!!
Messages postés
40
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
14 septembre 2018
1
Hum.. j'ai plus mon ordi sous lequel je développai en ce moment, donc sinon il y à une solution toute bête.

Met ca au chaque checkbox.
Exemple pour le 1er
if checkbox1.checked=true then
formulaire2.textbox1.visible=true
else
forumlaire2.textbox2.visible)false


Bien sur en changeant le nombre des textbox et des checkbox.
Voila c'est simple, un peu long si ta plein de checkbox, mais pourquoi chercher des fonctions compliqué quand on peux faire simple.