Céer des CheckBox dynamiquement dans un Userform

dks31 Messages postés 14 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 21 août 2018 - 23 mai 2004 à 04:22
JacquesLeBlanc Messages postés 3 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 22 juin 2004 - 22 juin 2004 à 20:27
Bonjour à tous,

Je sais que vous allez bondir vu ne nombre de question sur ce theme, mais apres y avoir passé beaucoup de temps, je n'y arrive toujours pas...

Dans un UserForm d'Excel, je place un CheckBox que j'appelle CKB. A TagIndex, je mets 0. Et je le rend invisible.

Ensuite je tape mon code:

Private Sub UserForm1_Activate ()

For i = 0 To 5
Load CKB (i)
CKB (i).Caption = "Option " & i
CKB (i).Visible = True
Next

End Sub

Et là, à chaque fois, c'est la meme chose: J'ai une erreur 13 au niveau du Load ("Incompatibilité de type").

Je ne vois pas ce que j'ai oublié et là franchement je craque !!! J'ai l'impression d'y etre presque mais ça veut pas...

J'espere que quelqu'un pourra m'aider.
Merci.

8 réponses

pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
23 mai 2004 à 10:39
For i=1 to 5 !!!!!

Car le cbk(0) est deja load!!!!!! donc err!!!!
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 mai 2004 à 15:55
Non ce n'est aps cela le Pb le souci c'est qu'il a mis le TabIndex à 0 (et non le TagIndex comme tu l'as écris, je pense qu'il s'agit d'une faute de frappe) Cette propriété n'est pas la bonne !! Elle indique dans quel ordre les controles sont accédé par appuis succéssif sur la touche TAB !! Pour fair eun groupe de controle c'est la prorpriété Index, pas TabIndex. Ton CKB n'ets alors pas membre d'un groupe de controle et donc CKB(i) ne signifie rien du tout pour VB !
A noter que tu sembles travailler en VBA pour Excel et il me semble que tu ne peux aps définir de groupe de controle en VBA ! Je ne suis pas un spécialiste en la matière mais il me semble avoir déjà renseigner quelqu'un sur le sujet et il s'est avérer que VBA n'offrait pas cette fonctionnalité la, si mes souvenirs sont exact !!

Christophe R.
0
dks31 Messages postés 14 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 21 août 2018
23 mai 2004 à 15:56
Merci PCPUNCH

Mais j'avais dejà essayé...

Private Sub UserForm_Activate ()

For i = 1 To 5
Load CKB (i)
CKB (i).Caption = "Option " & i
CKB (i).Visible = True
Next

End Sub

Et le pb est le meme. Il faut declarer quelque chose avant ?
Ou avez vous carrement une autre solution pour que ça marche?
0
dks31 Messages postés 14 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 21 août 2018
23 mai 2004 à 16:04
Salut crenaud76,

Effectivement, il s'agit d'une faute de frappe pour TabIndex. Et oui je travaille sous VBA Excel.

En fait, tout ce que j'ai pu trouver sur le sujet parle de mettre l' "Index" à 0. Or je n'ai pas vu de reference "Index" dans les proprietés de CheckBox d'Excel. J'ai supposé qu'il s'agissait de TabIndex mais apparement c'est po ça...

Oui mais... Il existe une solution ?!
0

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

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 mai 2004 à 16:07
Comme je disais, je ne suis pas un spécialiste VBA, mais il semble possible de travailler avec la collection Controls d eal userform :
Un truc du genre UserForm1.Controls.Add .....
Mais je ne peux pas t'en dire +

Christophe R.
0
JacquesLeBlanc Messages postés 3 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 22 juin 2004
22 juin 2004 à 17:47
Salut

Essaye ceci

Controls(CKB & i).Caption

Sous VBA un CheckBox n'as pas la propriété "Index"
Seul les pages d'un contrôle MultiPage ou Tabs d'un contrôle TabStrip l'ont.

Bonne prog.
Jacques
0
JacquesLeBlanc Messages postés 3 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 22 juin 2004
22 juin 2004 à 17:57
Encore moi

Ecrit plutot

Controls("CKB" & i).Caption

Ca va mieux

Bonne prog.
Jacques
0
JacquesLeBlanc Messages postés 3 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 22 juin 2004
22 juin 2004 à 20:27
Encore moi(dernière fois)

J'ai essayé ton code: "Load" c'est dans VB, et non dans VBA.

Essaye plutot ca.
Dans l'éditeur VBA Insere un UserForm appelé UserForm1.
Colle ce code. Execute le.

Option Explicit

Private WithEvents CKB1 As MSForms.CheckBox
Private WithEvents CKB2 As MSForms.CheckBox

Private Sub UserForm_Initialize()
Set CKB1 = UserForm1.Controls.Add("Forms.CheckBox.1", "Boutton1", True)
CKB1.Left = 18
CKB1.Top = 50
CKB1.Width = 75
CKB1.Height = 20
CKB1.Caption = CKB1.Name

Set CKB2 = UserForm1.Controls.Add("Forms.CheckBox.1", "Boutton2", True)
CKB2.Left = 18
CKB2.Top = 100
CKB2.Width = 75
CKB2.Height = 20
CKB2.Caption = CKB2.Name
End Sub

Private Sub CKB1_Click()
CKB1.Enabled = False
End Sub

Private Sub CKB2_Click()
Unload Me
End Sub

Je sais qu'il y a répétition, surtout si tu crée beaucoup de controles dynamiquement, mais c'est rapide et efficace.
J'utilise Excel2000.
Ca fonctionne bien
Amuse toi bien!

Bonne prog.
Jacques
0
Rejoignez-nous