[vba] faire référence à une variable variable :)

Le
Praag
Bonjour,

j'ai deux soucis identiques : je veux faire appel à une variable qui
change en fonction de ma boucle.

Premier cas :

j'ai deux variables publics
int1 et int2

je veux arriver à ce résultat

for i = 1 to 2 step 1

strSql = " select * from matable where monchamps =" & int1 à la
première itération puis int2 à la suivante etc.



Deuxième cas très semblable

je veux appeler une image dans une zone image en fonction d'une
variable

Si mavariable = 1 alors

Me.mazoneimage1.picture = le chemin de mon image

si mavariable = 2 alors
Me.mazoneimage2.picture = le chemin de mon image

Pour ce dernier cas, à une époque je savais le faire mais ca fait trop
longtemps que j'ai pas tapé une ligne de code :)

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #22587231
Salut,

Praag wrote:
Bonjour,

j'ai deux soucis identiques : je veux faire appel à une variable qui
change en fonction de ma boucle.

Premier cas :

j'ai deux variables publics
int1 et int2

je veux arriver à ce résultat

for i = 1 to 2 step 1

strSql = " select * from matable where monchamps =" & int1 à la
première itération puis int2 à la suivante etc.



Deuxième cas très semblable

je veux appeler une image dans une zone image en fonction d'une
variable

Si mavariable = 1 alors

Me.mazoneimage1.picture = le chemin de mon image

si mavariable = 2 alors
Me.mazoneimage2.picture = le chemin de mon image

Pour ce dernier cas, à une époque je savais le faire mais ca fait trop
longtemps que j'ai pas tapé une ligne de code :)

Merci.




Le mieux est d'utiliser une variable tableau.

Dim varChemin as variant
varChemin(1) = "c:..."
varChemin(2) = "c:..."

for i = 1 to 2
me.mazoneimage.Picture = varChemin(i)
next

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
blaise cacramp
Le #22587351
Bonjour,

Voilà une piste pour le premier cas qui sera reproductible pour le second
C'est la vatiable static qui fait office de drapeau oui/non

Static Sub Test()
Dim sSql As String
Dim I As Integer
Static bOuiNon As Boolean
Dim iExterieur(1 To 2) As Integer '?
bOuiNon = Not bOuiNon
If bOuiNon Then
iExterieur(1) = int1
iExterieur(2) = int2
Else
iExterieur(1) = int2
iExterieur(2) = int1
End If
For I = 1 To 2 Step 1
sSql = " select * from matable where monchamps =" & iExterieur(I)
'...
Next
End Sub


Blaise
Praag
Le #22587591
Merci beaucoup à tous les deux.

J'ai pas bien compris ta solution blaise mais celle de 3stone répond
bien à mon problème dans le premier cas J'étais parti sur une solutio n
bien plus crado ;) avec une table temporaire où je chargeais mes
variables puis je faisais tourner un recordset de la table avec ma
boucle. Cette solution me semble bien plus élégante.

Pour le second cas ca m'est revenu (ouais ok j'ai fait une recherche
de groupe dans google ^^ ) c'est tout con
Me("img" & i).picture = strchemin


Bonne fin de week end.
Praag
Le #22587741
Ah par contre ca marche pas si on met pas d'argument pour le nombre de
ligne du tableau

Public varchemin as variant

varchemin(1) = "toto" renvoie une erreur

Il faut écrire par exemple

Public varchemin(20) as variant
Publicité
Poster une réponse
Anonyme