Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1846 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA - appeler une variable en concaténant un string et une variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA - appeler une variable en concaténant un string et une variable

n°1876056
galahad
Posté le 21-04-2009 à 22:59:06  profilanswer
 

Hello,
 
Je voudrais rendre le bout le code suivant plus élégant et bute sur la syntaxe à adopter.
 
 
Voici un exemple réduit à sa plus simple expression :
 
1/ L'utilisateur se voit proposé un UserForm
2/ Il remplit des TextBox dont les noms sont var1, var2, ... var50
3/ Je copie ces données dans les cellules A1, A2, ... A50
NB : je n'utilise pas un tableau ; chaque string (ex. : "var1" ) correspond à un TextBox de mon User Form
 
Ce code rudimentaire fonctionne :  

Code :
  1. Range("A1" ).Value = var1
  2. Range("A2" ).Value = var2
  3. ...
  4. Range("A50" ).Value = var50


Seulement voilà, ce n'est pas très classieux :)
Je voudrais donc utiliser une boucle.
 
J'avais pensé à cela :

Code :
  1. Do While i <= 50
  2.         Cells(1, i) = "var" & i
  3.         i = i + 1
  4. Loop


Le problème, c'est que A1 = var1 ; A2 = var 2, etc. Je voudrais, vous l'avez compris, A1 = [valeur stockée dans A1], tout simplement !
 
 
Quelqu'un peut-il m'éclairer sur la syntaxe s'il vous plaît ?
 
Question subsidiaire : la solution 2 sera-t-elle plus rapide à être exécutée ? Comment pourrais-je le déterminer par moi-même ?
(cela pourrait me servir pour d'autres pans de mon code)
 
 
Merci pour votre aide :)
Anthony

mood
Publicité
Posté le 21-04-2009 à 22:59:06  profilanswer
 

n°1876136
olivthill
Posté le 22-04-2009 à 10:07:48  profilanswer
 

Un solution consisterait à avoir un tableau au lieu d'avoir cinquante variables différentes.
Par exemple :

Dim tb_var(1 to 50) as String
' Remplissage d'un tableau de variables à partir d'un fichier
i = 1
Open "FICHTEST" For Input As #1  
Do While Not EOF(1)
        Get #1, , tb_var(i)
        i = i + 1
Loop
Close #1  
 
' Utilisation du tableau
i = 1
Do While i <= 50
        Cells(1, i) = tb_var(i)
        i = i + 1
Loop

n°1876160
galahad
Posté le 22-04-2009 à 10:40:53  profilanswer
 

Hello olivthill,
 
Merci pour ton aide. Ta solution impliquant de passer par un fichier alors que je récupère mes variables d'un UserForm me pose problème : je zappe l'interface de mon UserForm au profit d'un fichier txt un peu moins convivial.
 
Tu aurais une alternative qui utiliserait un UserForm s'il te plait ?
Sachant qu'un TextBox ne peut pas s'appeler var(1), var(2), mais seulement var1, var2 :/
 
 
Merci,
A.

n°1876224
olivthill
Posté le 22-04-2009 à 12:00:22  profilanswer
 

Désolé. Le fichier c'était juste pour un exemple. En fait, je n'avais pas compris que var1, etc. venaient d'un userform.

n°1876581
galahad
Posté le 23-04-2009 à 00:20:20  profilanswer
 

Hello !
 
Un pote m'a mis sur la bonne voie en me conseillant de jeter un œil ici :
http://forum.hardware.fr/hfr/Progr [...] 1690_1.htm
 
Pour mon code, ça donne donc :
 

Code :
  1. Do While i <= 50
  2.         Cells(1, i) = Controls("var" & i).Value
  3.         i = i + 1
  4. Loop


A noter, si mes variables ne venaient pas d'un UserForm, j'aurais utilisé un tableau.
Exemple :

Code :
  1. Private Sub exemple()
  2. Dim i As Integer
  3. Dim var(1 To 3) As String
  4. var(1) = "a"
  5. var(2) = "b"
  6. var(3) = "c"
  7. For i = 1 To 3
  8.     Cells(1, i) = var(i)
  9. Next i
  10. End Sub


 
En espérant que l'un des deux exemples serve à quelqu'un :)
 
 
HTH,
Anthony


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA - appeler une variable en concaténant un string et une variable

 

Sujets relatifs
Formatter un Long en un String lisibleVBA Excel 2003 vs Excel 2007
VBA sous excel 2003AS3 : Utilisation de variable et function d'une classe à l'autre (Eten
batch récupére variable dans un texteutiliser le & dans un jcl comme etant un caractere et non variable
[java] Une string en arraylist ?Petit problème macros VBA Excel
[Résolu] Comment récupérer une variable asp en jscript[batch] récupérer le resultat d'une commande dans une variable
Plus de sujets relatifs à : VBA - appeler une variable en concaténant un string et une variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR