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

Signaler
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011
-
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
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
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011

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!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011

Un grand merçi ucfoutu pour le vitesse de réponse
ça marche

Gnain!