VBA - Appel de variables via des boucles

Résolu
Adri -  
pijaku Messages postés 13513 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

  1. 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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      bonjour pijaku
      Faut tester d'abord !!
      A+
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  3. 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