Incrémenter une variable [Résolu]

Messages postés
8
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
26 février 2009
- - Dernière réponse : 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
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
8
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
26 février 2009
0
Merci
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?
Commenter la réponse de Sevoli
Messages postés
8
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
26 février 2009
0
Merci
Je viens de faire le test et ça fonctionne bien.
Merci encore Jack!
@+
Commenter la réponse de Sevoli
Messages postés
8
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
26 février 2009
0
Merci
Ok compris
Merci Jack
Commenter la réponse de Sevoli