Eviter la redondance dans du code vb a l'aide d'une boucle

Résolu
Stag2 Messages postés 26 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 22 juillet 2008 - 15 juil. 2008 à 17:15
Stag2 Messages postés 26 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 22 juillet 2008 - 15 juil. 2008 à 17:38
Bonjour,

Voici un bout de code de mon programme:

Case "6"


    text1.Visible = True
    Text2.Visible = True
    Text3.Visible = True
    Text4.Visible = True
    Text5.Visible = True
    Text6.Visible = True
    Check1.Visible = True
    Check2.Visible = True
    Check3.Visible = True
    Check4.Visible = True
    Check5.Visible = True
    Check6.Visible = True
    Check7.Visible = True
    Check8.Visible = True
    Check9.Visible = True
    Check10.Visible = True
    Check11.Visible = True
    Check12.Visible = True
    Check13.Visible = True
    Check14.Visible = True
    Check15.Visible = True
    Check16.Visible = True
    Check17.Visible = True
    Check18.Visible = True

J'aurais aimer rendre mon compte plus joli et plus propre en passant par des boucles for
J'ai essayé comme cela:

Dim I As Variant
Dim J As Variant

Case "6"For I 1 To I 5   For J 1 To J 18

Text I .Visible = True
Check J . Visible = True
Next I
Next J

J'obtiens l'erreur "Sub or function not defined" pour Text & Check


Mon erreur vient vraisemblablement de la syntaxe de Text I, mais je ne vois pas comment.... Text'i', Text"i" sont erronnés ...


Merci pour votre aide

5 réponses

marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
15 juil. 2008 à 17:21
Salut,

Il me semble que dans les proprietes de ces objets, tu peux attribuer un index. Pour les text, j'en suis sur, je pense qu'il en est de meme pour les check

Tu obtiens alors :

>For i=1 to 6
>   Text1(i).Visible = True
>Next i
>
>For i=1 to 18
>   Check1(i).Visible = True
>Next i

A+,
Tom

Marin Marais
3
Stag2 Messages postés 26 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 22 juillet 2008
15 juil. 2008 à 17:25
Il semblerait que l'on ne puisse pas intégrer de variable dans les noms de TextBox. D'après mes recherches le nom de variable se met (i).

J'ai donc essayé avec un With text1 text2 text3 text4 etc...
                                          .visible = True

Mais il semblerait que with n'attende qu'un seul argument.
Si quelqu'un avait une petite idée pour rendre mon code plus agréable, cela m'aiderait :)
0
Stag2 Messages postés 26 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 22 juillet 2008
15 juil. 2008 à 17:29
J'avais répondu sans voir ta réponse marin marais. Je cherche comment mettre un index et je te dis si ca marche
En attendant je te remercie :)
PS: Est ce volontaire de laisser le '1' dans  Text1 (i).Visible True ou est ce plutot Text (i).Visible True ?
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
15 juil. 2008 à 17:36
Non non, tu peux appeler "Check1" Robert si tu veux.
"Check1" correspond juste au nom par defaut donne par VB.
En pratique, tu mets en place une textbox (par exemple). Tu la renommes et lui attribue un index illico.

Enfin je dis ca, je suis pas un pro, mais ca permets justement de ne plus se soucier de ce genre de probleme...

Tom.

Marin Marais
0

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

Posez votre question
Stag2 Messages postés 26 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 22 juillet 2008
15 juil. 2008 à 17:38
Parfait, ca marche maintenant
Merci ++
0
Rejoignez-nous