Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
Praag
Bonjour,

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

Premier cas :

j'ai deux variables publics
int1 et int2

je veux arriver =E0 ce r=E9sultat

for i =3D 1 to 2 step 1

strSql =3D " select * from matable where monchamps =3D" & int1 =E0 la
premi=E8re it=E9ration puis int2 =E0 la suivante etc.



Deuxi=E8me cas tr=E8s semblable

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

Si mavariable =3D 1 alors

Me.mazoneimage1.picture =3D le chemin de mon image

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

Pour ce dernier cas, =E0 une =E9poque je savais le faire mais ca fait trop
longtemps que j'ai pas tap=E9 une ligne de code :)

Merci.

4 réponses

Avatar
3stone
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)
Avatar
blaise cacramp
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
Avatar
Praag
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.
Avatar
Praag
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