VBA - Appel de variables via des boucles

Résolu/Fermé
Signaler
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
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
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
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
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 197
bonjour pijaku
Faut tester d'abord !!
A+
0
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
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