Roussetj
Messages postés52Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 2 octobre 2008
-
1 juil. 2008 à 10:54
Roussetj
Messages postés52Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 2 octobre 2008
-
3 juil. 2008 à 11:18
bonjour,
je vous explique mon probleme : j'ai placé sur mon fichier quinze "checkbox"
on ne peut cocher qu'une seule checkbox sur les quinze.
on a une variable Value as integer
la valeur de cette variable dépend de la checkbox cochée:
voici mon code pour mieux comprendre :
If Checkbox1.Value True Then Value1If Checkbox2.Value True Then Value2
...If Checkbox15.Value True Then Value15
ce code est assez long a tapé surtout si je dois encore rajouté des checkbox...
donc je voulais savoir si il est possible de réaliser une boucle pour rendre ce code plus simple?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 1 juil. 2008 à 11:19
Bonjour
La collection controls peut être utilisée :
Controls("checkbox1") se réfère la la checkbox checkbox1
ActiveControl se réfère quant à lui au control actif... et ainsi :
if ActiveControl.value True then Value mid(ActiveControl.name, 9) retournera 10 pour le controle CheckBox10
Pour une boucle sur n checkboxes nommées checkbox1, checkbox2, .... checkboxn
For I = 1 to n
If controls("checkbox" & I) = true then
Value = I
end if
End if
Voilà ! je t'ai parlé de plusieurs aspects ===>> à tyoi de les utiliser comme tu l'entends.
Ceci étant dit : puisqu'une seule checkbox, dis-tu, peut être cochée , j'utiliserais de préférence des OptionButtons (dont c'est le rôle)
Roussetj
Messages postés52Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 2 octobre 2008 1 juil. 2008 à 11:26
en effet je viens d'assayer rapidement el les OptionButtons sont plus pratiques je ne savais pas qu'ils avaient cette particularité. ( qui est leur principale je pense.... )
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 1 juil. 2008 à 13:44
salut,
et si jamais tu dois faire plusieurs groupes de OptionButtons, genre OptionButtonTrancheAge, OptionButtonSexe, OptionButtonCategorieProf, tu peux les placer dans des Frames, pour permettre un choix sur chaque groupe.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 1 juil. 2008 à 16:33
Salut,
>[auteur/PILEPOIL/1026968.aspx pile_poil] : C'est Bien value pour les option Button
Cela vaut ce que ca vaut mais tu peux essayer ceci.
Dim Ctrl As Control
Dim Value As Integer
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.OptionButton Then If Ctrl.Value True Then Value Mid(Ctrl.Name, 13)
End If
Next
Call MsgBox(Value), ----
[code.aspx?ID=41455 By Renfield]
Roussetj
Messages postés52Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 2 octobre 2008 2 juil. 2008 à 08:22
oui en effet ç amarche!
merci
mais j'ai encore 2 questions:
1) comment fait-on si il y a plusieurs groupes d'optionbutton sur la feuille de calcul? pour que cette boucle ne s'applique qu'à un seul groupe?
2) quand tu m'as demandé ou je placais mon code? au debut, tu pensais que je l'avais placé ou? ds un module? si oui quel est l'interet de le placer la? et quelle est la meilleure solution?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 juil. 2008 à 09:33
Salut,
1)Est ce que ces "groupe" possèdent des noms différents? ou bien un Container différent?
2)Tu aurais pu le placer dans un UserForm (ajoutable depuis l'IDE VBA) mais pour dire si il existe une meilleure solution, cela dépend du projet entier.
Roussetj
Messages postés52Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 2 octobre 2008 3 juil. 2008 à 11:18
2) d'accord
1) j'ai reussi a me debrouiller en raisonnant sur le nom de chaque OptionButton et sur le nom du groupe
dans le groupe concerné les nom des OptionButton sont OptionButtonECU1,..., OptionButtonECU15
alors que dans les autres groupes ils ont des totalemnt différents.
voici mon code :
Dim Opt As OLEObject
DIM Valeur as Integer
For Each Opt In Me.OLEObjects
If Mid(Opt.Name, 1, 15) = "OptionButtonECU" Then <= ligne rajoutée If Opt.Object.Value True Then Valeur Mid(Opt.Name, 16)
End If
Next