[déplacé VB6 -> VBA] Stocker textbox dans une variable avec boucle

Résolu
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011 - 12 févr. 2010 à 20:18
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011 - 12 févr. 2010 à 21:51
Bonjours,
Voici mon problème,
J'ai 20 textbox qui s'appelle Textbox1,Textbox2,Textbox3...J'usquà Textbox20
Je veut les récupérer dans un genre de tableau
alors:

Dim intSub As Integer
Dim test(20) As String
For intSub = 1 To 20
test(intSub) = ("UserForm1.TextBox" & intSub)
Next intSub
intSub = 1
Do
MsgBox test(intSub)
intSub = intSub + 1
Loop Until (intSub > 20)

Bien évidemment ça ne fonctionne pas.
La variable test est égale au nom du textbox
et non à son contenu. Peut-on avoir son contenue au lieu de son nom?

Merçi d'avance.

Gnain!

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2010 à 21:39
C'est pourtant simple !
Et UserForm1 ne fait pas partie du nom de ton contrôle !

Bon ...
Dim intSub As Integer
  Dim test(1 To 2) As String
  For intSub = 1 To 2
    test(intSub) = UserForm1.Controls("TextBox" & intSub).Text
  Next intSub
  For intSub = 1 To 2
    MsgBox test(intSub)
  Next
 End Sub



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
Profil bloqué
12 févr. 2010 à 21:04
Pourquoi ne pas faire un groupe de Textbox allant de Textbox1(0) à Textbox1(19)


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2010 à 21:05
Bonjour,

ceci :
test(intSub) =  ("UserForm1.TextBox" & intSub) 

ne risque en effet pas de fonctionner.
Je vois que tu développes sous VB6.
VB6 offre la possibilité ( que n'offre pas VBA ) de créer des groupes de contrôles indexés ... à utiliser dans un tel cas de figure.
Alors : tu développes sous quoi ?

Sous VBA, tu as la possibilité d'utiliser la collection Controls
Ainsi : Controls("toto" & n) se réfère au contrôle toto3 si n = 3
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2010 à 21:09
Salut Galain,
Je crois bien qu'il n'a aucune possibilité de créer des groupes de contrôles indexés (je lis UserForm1.TextBox ....). qui me fait parier qu'il ne développe pas sous VB6


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2010 à 21:15
2 possibilités sous VBA :
1) la plus facile : celle que j'ai indiquée plus haut
2) écrire une classe (mais plus complexe)


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Profil bloqué
12 févr. 2010 à 21:19
Ok ucfoutu : je n'avais point vu que c'était du VBA

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011
12 févr. 2010 à 21:30
Effectivement ucfoutu je suis en vba
mais alors:
Je ne sais pas ce que c'est Controls
J'ai don essayé:

Dim intSub As Integer
Dim test(20) As String
For intSub = 1 To 20
test(intSub) = Controls("UserForm1.TextBox" & intSub)
Next intSub
intSub = 1
Do
MsgBox test(intSub)
intSub = intSub + 1
Loop Until (intSub > 20)

Est-ce que c'est une fonction?
Pouvez-vous m'éclairer quoi faire

merçi

Gnain!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2010 à 21:40
Moi, j'ai testé avec 2 textboxes. Il est clair que tu dois remplacer 2 par 20, dans ton cas, hein ...


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011
12 févr. 2010 à 21:51
Un grand merçi ucfoutu pour le vitesse de réponse
ça marche

Gnain!
0
Rejoignez-nous