Incrémenter une variable

Résolu
Sevoli Messages postés 8 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 26 février 2009 - 25 févr. 2009 à 22:46
Sevoli Messages postés 8 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 26 février 2009 - 26 févr. 2009 à 13:52
Bonsoir,
Je travaille sous Access 2003 et j'importe des données XML d'un fichier via VBA.
Certains noeuds XML ont x valeurs séparées par une virgule aussi je fais un split pour récupérer chaque valeur une à une, jusque là sans problème.
Ma question est : le nombre de valeur peut aller de 1 à 10 aussi j'ai déclaré au début de mon code:

dim val_1, val_2, val_3...val_10 as string   (les pointillés sont remplacés par toutes les valeurs bien sûr).

je fais donc:
Tab() = split(valeurs, ",", -1)
Nb = ubound(Tab())
i = 0
Do While i < nb+1

et c'est là que ça se complique, je voudrais pouvoir incrémenter le n° de ma variable en fonction de Nb:
J'ai essayé:
Eval ("val_" & Nb) = Tab(i)
Loop

mais ça marche pas, j'ai une erreur comme quoi il ne trouve pas val_1, comme si il n'arrivait pas à comprendre que c'est une variable déclarée plus haut!
Quelqu'un a t-il une idée, SVP?
Merci d'avance

5 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
26 févr. 2009 à 01:07
Salut
Oui, je crois que c'est faisable en VBA mais je ne me rappelle plus la méthode.
Une autre solution plus pratique serait d'utiliser un tableau de Valeur plutôt que des Var individuelles.
   Dim maVar(1 To 10) As String

Nota 1 : Dans un Dim, mettre le "As String" à la fin de signifie pas que les précédentes variables soient aussi des String (ce seront des Variant). Il faut répéter le "As String" pour chaque variable
Nota 2 : Attention à ne pas utiliser Val comme nom de variable car c'est un mot réservé du langage

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
26 févr. 2009 à 10:03
Dasn ton cas, ce serait 
   maVar(nb) = Tab(i)

Nota 3 : Je répète, évite d'utiliser des noms de variables ressemblant aux mots clés, sinon tu vas être emmerdé un jour ou l'autre --> Tab, ça passe, mais méfie toi
Essaye d'utiliser des nommages de variables en incluant, en tête, le type de la variable, genre
      Dim str Chaine As String
ou   Dim aTableau() As String   ' "a" comme "array"
On en parlait justement récemment http://www.vbfrance.com/forum/sujet-DONNER-BON-NOM-OBJETS_1274954.aspx

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Sevoli Messages postés 8 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 26 février 2009
26 févr. 2009 à 08:22
Merci Jack,
Je regarde ça et je te dis si ça fonctionne.
Je ne vois pas bien dans ta solution comment tu récupères la variable dans la boucle:

Do While i < nb+1
maVar(i) = Tab(i)
Loop

est-ce comme cela que tu incrémenterais?
0
Sevoli Messages postés 8 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 26 février 2009
26 févr. 2009 à 09:41
Je viens de faire le test et ça fonctionne bien.
Merci encore Jack!
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sevoli Messages postés 8 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 26 février 2009
26 févr. 2009 à 13:52
Ok compris
Merci Jack
0