Variable, dénomination & rappel de variable

Fermé
miko96 Messages postés 10 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013 - 25 oct. 2013 à 17:13
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 29 oct. 2013 à 14:02
Bonjour,

Je cherche une solution (qui doit surement être toute simple) au problème suivant:

J'ai plusieurs variables qui sont dissociées par un chiffre:
Co1D, Co2D, Co3D...

Je souhaite utiliser mes variables comme limites dans une boucle for en allant par exemple de Co1D à Co3D.
Sauf que je souhaite mettre comme donnée d'entrée dans mon tableau seulement les chiffres 1 et 3. Mettons en A1 et A2

J'ai tenté ça:
Co1D=123
Co2D=124
Co3D=300
Debut=cells(1,1).value
Fin=cells(2,1).value
A="Co"& Debut&"D"
B="Co"&Fin&"D"

For i=A to B
...

Le problème, c'est que A et B sont des variables texte. Je ne sais pas comment faire pour que " "Co"& Debut&"D" " corresponde à ma variable!

Merci par avance de votre aide!

2 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
25 oct. 2013 à 18:33
Bonjour,

Marche pas comme ca. Utilisez un tableau:

ex:

Option Base 1 'tout en haut de la fenetre

Sub test()
Dim CoD(3) 'tableau de 1 a 3

CoD(1) = 123
CoD(2) = 124
CoD(3) = 300

A = CoD(Cells(1, 1).Value)
B = CoD(Cells(2, 1).Value)

For i = A To B


Next i
End Sub
1
miko96 Messages postés 10 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013
28 oct. 2013 à 16:32
C'est ce que je voulais éviter de faire... Mais merci pour la réponse! Au moins, c'est clair pour moi maintenant.
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
28 oct. 2013 à 17:48
Bonjour,

C'est ce que je voulais éviter de faire il y a une deuxieme solution, toujours avec un tableau, mais definition differente.

Vous pouvez aussi mettre les valeurs dans les cellules au lieu de l'indice du tableau, c'est plus simple.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
29 oct. 2013 à 12:25
Bonjour,

Une variante à la proposition de f894009 (salutations au passage), est de passer par une Ch'tite fonction :

Option Explicit

Dim Arret As Boolean

Sub test()
Dim Debut As Integer, Fin As Integer, i As Long, Pas As Integer

Arret = True
Debut = Boucle(Cells(1, 1).Value)
Fin = Boucle(Cells(2, 1).Value)
Pas = 1
If Arret = False Then MsgBox "Au moins une des deux valeurs de boucle est invalide": Exit Sub
If Fin < Debut Then Pas = -Pas 'permet de boucler de 300 à 124 par exemple (Step -1)

For i = Debut To Fin Step Pas
'Debug.Print i
' Bla bla
Next i
End Sub

Function Boucle(Valeur As Integer)
Select Case Valeur
Case 1
Boucle = 123
Case 2
Boucle = 125
Case 3
Boucle = 130
Case 4
Boucle = 135
'etc
Case Else
Arret = False
End Select
End Function

0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
29 oct. 2013 à 13:50
Bonjour, ca roule ??

ma deuxieme solution est celle-ci

Sub test()
Dim cod

cod = Array(123, 125, 130, 135)

a = cod(Cells(1, 1))
b = cod(Cells(2, 1))

For x = a To b


Next x

End Sub

tres peu differente de la premiere et tres simple
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
29 oct. 2013 à 13:57
Oui, ça roule! Merci.

Trois propositions valent mieux qu'une. Surtout si elles fonctionnent toutes.

Il (ou elle) aura donc le choix.

Bonne journée
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
29 oct. 2013 à 14:02
Re,
Avons nous pour habitude de partager des choses qui ne marchent pas !!!!

Bye
0