Remplissage de tableaux...

cs_ScRunCHy Messages postés 13 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 21 avril 2009 - 4 août 2008 à 15:41
franck453 Messages postés 19 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 28 septembre 2011 - 5 août 2008 à 10:27
Salut à tous,

J'ai un pb concernant la création et le remplissage d'un tableau. J'ai fait plein de recherches sur le net et je n'ai pas trouvé de réponse à une question qui parrait pourtant élémentaire...

Dans (Général), j'ai déclaré deux tableaux :
Dim TabChecko() As Integer
Dim TabCheckn() As Integer

Ensuite, dans Private Sub Form_Load(), j'ai initialisé mes tableaux :
ReDim TabChecko(5)
ReDim TabCheckn(5)

Et lorsque je clique sur un bouton "valider", je souhaite remplir ces tableaux avec la valeur des CheckBox que j'ai dans ma Form2. Pour cela je suis obligé d'écrire :

TabChecko(1) = Checko1.Value
TabChecko(2) = Checko2.Value
TabChecko(3) = Checko3.Value
TabChecko(4) = Checko4.Value
TabChecko(5) = Checko5.Value


TabCheckn(1) = Checkn1.Value
TabCheckn(2) = Checkn2.Value
TabCheckn(3) = Checkn3.Value
TabCheckn(4) = Checkn4.Value
TabCheckn(5) = Checkn5.Value

Et cela fonctionne... Mais n'y a t'il pas un moyen de faire toutes ces affectations sur une seule ligne ???
Un truc du genre :

TabChecko() = (Checko1.Value,Checko2.Value,Checko3.Value,Checko4.Value,Checko5.Value)

J'ai essayé en écrivant :
Dim TabChecko
TabChecko = Array(Checko1.Value,Checko2.Value,Checko3.Value,Checko4.Value,Checko5.Value)
Mais ensuite, une instruction du type TabChecko(i) ne fonctionne pas...

Je pourrais me contenter de cette écriture mais j'ai plusieurs tableaux à déclarer et le code va devenir très lourd....

Merci D'avance,

ScRunCHy

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
4 août 2008 à 17:20
Salut,

non pas possible avec ue seule ligne, regarde si ce qui suit te parait plus simple :

Sub demo2()

Dim MonControle As Object, oi As Long, ni As Long, CtrlName As String

Dans (Général), j'ai déclaré deux tableaux :
Dim TabChecko() As Integer
Dim TabCheckn() As Integer

Ensuite, dans Private Sub Form_Load(), j'ai initialisé mes tableaux :
ReDim TabChecko(5)
ReDim TabCheckn(5)

oi = 0
ni = 0

For Each MonControle In UserForm2.Controls 'on boucle sur tout les controls
   If TypeOf MonControle Is MSForms.CheckBox Then 'si le control est une CheckBox alors
        CtrlName = Left(LCase(MonControle.Name), Len("Checkx")) ' on extrait la premiere partie de son nom
        Select Case CtrlName
            Case "checko" 'attention le nom doit etre en minuscule !
                TabChecko(oi) = MonControle.Value
                oi = oi + 1
            Case "checkn" 'attention le nom doit etre en minuscule !
                TabCheckn(ni) = MonControle.Value
                ni = ni + 1
        End Select
   End If
Next
End Sub

A+
0
franck453 Messages postés 19 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 28 septembre 2011
5 août 2008 à 10:27
Bonjour

utilisez les paramètres INDEX de vos checkbox...

au lieu de
TabChecko(1) = Checko1.Value
TabChecko(2) = Checko2.Value
TabChecko(3) = Checko3.Value
TabChecko(4) = Checko4.ValueTabChecko(5) Checko5.Value TabCheckn(1) Checkn1.Value
TabCheckn(2) = Checkn2.Value
TabCheckn(3) = Checkn3.Value
TabCheckn(4) = Checkn4.Value
TabCheckn(5) = Checkn5.Value

vous réduirez le code à
for i=1 to 5     TabChecko(i) Checko(i).Value:TabCheckn(i) Checkn(i).Value

next i

Amicalement,

Franck
0
Rejoignez-nous