VBA - Appel de variables via des boucles

Résolu/Fermé
Adri - Modifié par Adri le 4/08/2010 à 10:37
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 4 août 2010 à 11:54
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

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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
4 août 2010 à 11:24
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 août 2010 à 11:30
bonjour pijaku
Faut tester d'abord !!
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
4 août 2010 à 11:54
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
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