[VBA] Nombre variable de boucles FOR imbriquées

Fermé
2pat - 22 mai 2014 à 16:49
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 25 mai 2014 à 14:55
Bonjour,


Alors voilà ma procedure:

Dim fiber(3) As Double
Dim wire(3) As Double
'
fiber(1) = 0.1
fiber(2) = -0.1
fiber(3) = 0
'
wire(1) = 0.2
wire(2) = -0.2
wire(3) = 0
'
comb = 1
For p = 1 To 3
For o = 1 To 3
For n = 1 To 3
For m = 1 To 3
For l = 1 To 3
For k = 1 To 3
For j = 1 To 3
For i = 1 To 3
For h = 1 To 3
tabdata(6 + 12 * (comb - 1), 1) = "9001 AXIAL " & wire(h)
tabdata(7 + 12 * (comb - 1), 1) = "9002 AXIAL " & wire(i)
tabdata(8 + 12 * (comb - 1), 1) = "9003 AXIAL " & wire(j)
tabdata(9 + 12 * (comb - 1), 1) = "8001 AXIAL " & fiber(k)
tabdata(10 + 12 * (comb - 1), 1) = "8002 AXIAL " & fiber(l)
tabdata(11 + 12 * (comb - 1), 1) = "8003 AXIAL " & fiber(m)
tabdata(12 + 12 * (comb - 1), 1) = "8004 AXIAL " & fiber(n)
tabdata(13 + 12 * (comb - 1), 1) = "8005 AXIAL " & fiber(o)
tabdata(14 + 12 * (comb - 1), 1) = "8006 AXIAL " & fiber(p)
comb = comb + 1
Next
Next
Next
Next
Next
Next
Next
Next
Next

Jusque là tout allez bien...
Maintenant le probleme est que je veux pouvoir faire ça non plus avec 9 variables mais avec n.
J'avais pensé à une function recursive mais je n'ai rien réussis à produire de valuable.
Ou bien peut être générer des noms de variables à partir d'une variable, comme a1,a2,...an, mais là encore de concluant.

Donc si vous avez des propositions je vous en serais très reconnaisant.

Merci d'avance pour votre aide.

A voir également:

1 réponse

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
23 mai 2014 à 00:08
Bonjour,

vue l'heure je te décris juste l'idée.

Un tableau d'entiers i(1 to n) qui ira de 0 à 2 pour chaque index. Il faudra faire +1 à l'utilisation.
Tu fais ton calcul et tu passes à la combinaison suivante ainsi (c'est l'idée, il y a peut-être des erreurs) :
for j= 1 to n
i(j)=(i(j) +1) mod 3
if i(j) <>0 then exit for
next j
Si somme de tous les index=0 c'est fini, sinon tu continue ta boucle avec le calcul en haut.

eric

0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
25 mai 2014 à 14:55
de rien...
0