Control(i).Caption

Résolu
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 19 janv. 2009 à 00:07
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Derniè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...

5 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
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
3
gnieark Messages postés 53 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 22 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

Bon courage!
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
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.

Merci de nouveau,
JLuc01
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
19 janv. 2009 à 21:32
OK. Je crois que je comprends mieux le probleme.
Effectivement, la ligne Dim CheckBox As New Control ne sert a rien.

Merci encore,
JLuc01
0
Rejoignez-nous