VBA - Appel de variables via des boucles

Résolu
Adri -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis en train d'utiliser VBA pour remplir automatiquement des fichiers Word.
J'aimerais aller chercher la valeur contenu dans des TextBox dont les noms sont les suivant :
- NomAssocie1Text
- NomAssocie2Text
- NomAssocie3Text
- ect
J'utiliserai ensuite ces variables dans une autre procédure appelée RemplacerUnUniqueMot

Pour cela, j'utilise la boucle suivante :

-------------------------------ALGO------------------------------------------------------------
'définition des variables'
Dim i As Integer
Dim NomTemporaire As String

'initialisation des variables'
i = 1

Do While i <= nbAssociesText.Value
NomTemporaire = "NomAssocie" & i & "Text"
Call RemplacerUnUniqueMot(NomDeBase, NomTemporaire)
i = i + 1
Loop
----------------------------------------------------------------------------------------------------

Mon problème est le suivant :
La textbox que j'ai affecté à la variable nomtemporaire n'est pas appelable car NomAssocie1Text, NomAssocie2Text, ... sont directement considérées comme des string.
J'ai donc bien pour i=1 Nomtemporaire = NomAssocie1Text mais c'est un string et je n'arrive pas à aller chercher la chaine de caractère contenue dans mes TextBox NomAssocié1Text, NomAssocié2Text...

Quelqu'un aurait il une solution?

3 réponses

Adri
 
Après plusieurs heures de recherche on pose une question... mais une fois la question posée on tombe sur un site internet contenant la réponse^^

il suffit de remplacer dans mon code
NomTemporaire = Controls("NomAssocie" & i & "Text").Value

En espérant que cela serve à d'autres personnes
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut,
Tout dépends de ce que contiennent tes textbox. Voici un exemple avec une chaine de caractères (String)

Dim i As Integer 
Dim NomTemporaire, Valeur As String 
'initialisation des variables' 
i = 1 
Do While i <= nbAssociesText.Value 
NomTemporaire = "NomAssocie" & i & "Text" 
Valeur = NomTemporaire.Value
Call RemplacerUnUniqueMot(NomDeBase, Valeur) 
i = i + 1 
Loop

0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
bonjour pijaku
Faut tester d'abord !!
A+
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour Lermitte222,
Oui c'est vrai et je m'en excuse auprès du créateur de ce sujet. Je dois dire que je suis toujours en train de tester car chez moi, ni ma proposition, ni celle d'Adri ne semble vouloir fonctionner... Pour ce qui est de la mienne, ok je sais pourquoi, quand à l'autre... Donc je teste encore.
A+
0
Adri
 
Voici la solution que j'ai trouvé Pijaku :

-------------------------ALGO-------------------------------------------
'définition des variables'
Dim i As Integer
Dim NomTemporaire As String

'initialisation des variables'
i = 1

Do While i <= nbAssociesText.Value
NomTemporaire = Controls("NomAssocie" & i & "Text").Value
Call RemplacerUnUniqueMot(NomDeBase, NomTemporaire)
i = i + 1
Loop
------------------------------------------------------------------------------

De cette façon NomTemporaire = NomAssocie1Text.value puis à NomAssocie2Text.value puis à....
Donc lorsque j'utilise ma variable NomTemporaire j'ai bien accès au contenu de mes TextBox
0