cs_JLuc01
Messages postés206Date d'inscriptionsamedi 17 janvier 2009StatutMembreDernière intervention 5 mars 2013
-
19 janv. 2009 à 00:07
cs_JLuc01
Messages postés206Date d'inscriptionsamedi 17 janvier 2009StatutMembreDernière intervention 5 mars 2013
-
19 janv. 2009 à 21:32
Bonjour,
Je cherche a transformer un code complique en quelquechose de plus simple si c'est toutefois possible.
(en VBA sur feuille Excel)
Ce code ci-dessous marche, mais pour beaucoup de control (dans ce cas un checkbox), c'est un peu lourd.
Form1.CheckBox1.Caption = Sheet4.Cells(5, 2).Value
Form1.CheckBox2.Caption = Sheet4.Cells(6, 2).Value
Form1.CheckBox3.Caption = Sheet4.Cells(7, 2).Value
...
Je voudrais quelquechose comme ci-dessous:
For i = 1 To 30
Form1.CheckBox(i).Caption = Sheet4.Cells(5+i, 2).Value
Next i
Mais a ce niveau, je suis un peu perdu: toute suggestion est la bienvenue.
Si vous avez un bout de code ou simplement une direction ou chercher, je serais content.
Merci,
JLuc01
NB.J'ai chercher un peu sur le forum, mais sans resultats: mon probleme, c'est chercher quoi, quel mot cle...
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 19 janv. 2009 à 08:30
Bonjour,
Utilise la collection Controls (lis-là dans ton aide en ligne) pour arriver à ce qui ressemble ) ceci :
for i = 1 to 30
Form1.Controls("CheckBox" & i)..Caption = Sheet4.Cells(4 + i ,2).Value
next
Le fait, maintenant, que tu utilises le mot Form1 me donne à penser que tu as "pêché" un code VB6.
Si ton code est sur un userform de VBA, ne mets pas Form1.Controls, mais directement Controls("....).Caption
gnieark
Messages postés53Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention22 octobre 2010 19 janv. 2009 à 00:57
Bonsoir
J'ai un petit doutte sur la faisabilité en VBA, mais en VB6 la solution était de créer dynamiquement les controles.
La manipulation est de créer un checkbox, et de lui mettre 0 à la propriété index
ensuite un truc du genre:
for i = 1 to 30
load toncheckbox(i)
set toncheckbox(i).container = me
with toncheckbox(i)
.caption = Sheet4.Cells(5+i, 2).Value
.top = i* 400 + 100
.left =0
.visible = true
end with
next i
cs_JLuc01
Messages postés206Date d'inscriptionsamedi 17 janvier 2009StatutMembreDernière intervention 5 mars 20131 19 janv. 2009 à 15:59
Merci a tout les deux pour vos reponses.
En fait, mes CheckBox sont deja sur le UserForm. Je suppose que le code de gnieark construit les CheckBoxes sur le UserForm.
La reponse de jmf0 correspond mieux a mon probleme.
Le code suivant marche parfaitement:
Option Explicit
Dim CheckBox As New Control
Dim i As Integer
Sub Workbook_Open()
For i = 1 To 14
ufmSelection.Controls("CheckBox" & i).Caption = Sheet4.Cells(4 + i, 2).Value
Next i
End Sub
J'avoue ne pas tout comprendre, mais je dois surement lire plus attentivement l'aide sur Collection Controls.
Par exemple, pourquoi je dois mettre un s au deuxieme mot Control et pourquoi je dois utiliser CheckBox et non MyCheckBox par exemple. C'est pas completement clair.
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 19 janv. 2009 à 18:47
RE, donc,
La collection Controls est une collection des contrôles présents surt ton userform. Controls (avec un s) donc, est le nom donnée par VBA à cette collection. (ouvre ton aide en ligne sur le mot Controls - collection).
Je ne vois pas l'utilité de
Dim CheckBox As New Control
Personne ne t'oblige enfin à nommer d'une manière pluttôt que de l'autre !
Ainsi, donc, par exemple :
Controls("titi" & "2") se réfère au contrôle nommé titi2, quel qu'il soit (checkbox ou non)Controls("toto" & n) se réfère donc au contrôle nommé toto1 (si n 1), toto2 (si n2), etc...
Pour résumer : ouvre donc ton aide en ligne et lit ce qui y est dit à propos de la collection Controls.
Vous n’avez pas trouvé la réponse que vous recherchez ?