VBA - Appel de variables via des boucles
Résolu
Adri
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
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?
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?
A voir également:
- VBA - Appel de variables via des boucles
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel privé - Guide
- Double appel - Guide
- Signal d'appel - Forum iPhone
- Votre appel ne peut aboutir - Forum Mobile
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
il suffit de remplacer dans mon code
NomTemporaire = Controls("NomAssocie" & i & "Text").Value
En espérant que cela serve à d'autres personnes
Salut,
Tout dépends de ce que contiennent tes textbox. Voici un exemple avec une chaine de caractères (String)
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
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+
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+
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
-------------------------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