Eviter la redondance dans du code vb a l'aide d'une boucle [Résolu]

Signaler
Messages postés
26
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
22 juillet 2008
-
Messages postés
26
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
22 juillet 2008
-
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

Messages postés
106
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
16 juillet 2010
1
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
Messages postés
26
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
22 juillet 2008

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 :)
Messages postés
26
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
22 juillet 2008

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 ?
Messages postés
106
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
16 juillet 2010
1
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
Messages postés
26
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
22 juillet 2008

Parfait, ca marche maintenant
Merci ++