Variable en vba
Résolu
aemireille
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour! Je suis nouvelle sur ce forum et débutante, je dois programmer un jeu en vba sur excel pour mon cours d'informatique et je rencontre un problème qui m'empêche d'avancer!
je voudrais programmer une variable pour pouvoir l'utiliser dans des expressions comme ceci :
Sub variables()
Dim s As Integer
End Sub
Private Sub UserForm_Initialize()
x11.Picture = LoadPicture("C:\Users\alice\Desktop\im1.jpg ")
x19.Picture = LoadPicture("C:\Users\alice\Desktop\im2.jpg ")
x99.Picture = LoadPicture("C:\Users\alice\Desktop\im1.jpg ")
x91.Picture = LoadPicture("C:\Users\alice\Desktop\im2.jpg ")
For s = 12 To 14
x & s & .Picture = LoadPicture("C:\Users\alice\Desktop\im3.jpg ")
je voudrais pouvoir remplacer s dans mon expression par des nombres allant de 11 à 99 , et cela ne marche pas avec & s &, pour pouvoir utiliser x12, x13, en faisant varier le nombre s car les x11, x12 sont différentes zones d'images... je pensais que ça marcherait en définissant s comme variable au début, mais cela ne marche pas, pourriez vous m'aider?? ou me dire ce qui ne fonctionne pas dans le code?
merci beaucoup!
je voudrais programmer une variable pour pouvoir l'utiliser dans des expressions comme ceci :
Sub variables()
Dim s As Integer
End Sub
Private Sub UserForm_Initialize()
x11.Picture = LoadPicture("C:\Users\alice\Desktop\im1.jpg ")
x19.Picture = LoadPicture("C:\Users\alice\Desktop\im2.jpg ")
x99.Picture = LoadPicture("C:\Users\alice\Desktop\im1.jpg ")
x91.Picture = LoadPicture("C:\Users\alice\Desktop\im2.jpg ")
For s = 12 To 14
x & s & .Picture = LoadPicture("C:\Users\alice\Desktop\im3.jpg ")
je voudrais pouvoir remplacer s dans mon expression par des nombres allant de 11 à 99 , et cela ne marche pas avec & s &, pour pouvoir utiliser x12, x13, en faisant varier le nombre s car les x11, x12 sont différentes zones d'images... je pensais que ça marcherait en définissant s comme variable au début, mais cela ne marche pas, pourriez vous m'aider?? ou me dire ce qui ne fonctionne pas dans le code?
merci beaucoup!
3 réponses
Bonjour
Première remarque, déclarer une variable dans un Sub qui ne fait que ça, ça ne sert à rien car la variable n''existe plus dès que tu sors du Sub
Il faut la déclarer en dehors de tout Sub (variable globale, peu recommandé et inutile dans ton cas) ou à l'intérieur du Sub où tu l'utilises
Deuxième point, pour répondre à ta question, si tu veux désigner (dans le code d'un Form) un contrôle dont tu calcules le nom, il faut utiliser cette syntaxe
Première remarque, déclarer une variable dans un Sub qui ne fait que ça, ça ne sert à rien car la variable n''existe plus dès que tu sors du Sub
Il faut la déclarer en dehors de tout Sub (variable globale, peu recommandé et inutile dans ton cas) ou à l'intérieur du Sub où tu l'utilises
Deuxième point, pour répondre à ta question, si tu veux désigner (dans le code d'un Form) un contrôle dont tu calcules le nom, il faut utiliser cette syntaxe
For s = 12 To 14 Controls("x" & s).Picture = LoadPicture("C:\Users\alice\Desktop\im3.jpg ") Next s
Super, je viens de tester et de rentrer mes variables dans le userform_initialize
Merci Beaucoup!
Par contre pourquoi doit on préciser "next s" à la fin? est-ce pour pouvoir donner une nouvelle valeur à la variable ou est-ce indispensable pour l'exécution?
Merci Beaucoup!
Par contre pourquoi doit on préciser "next s" à la fin? est-ce pour pouvoir donner une nouvelle valeur à la variable ou est-ce indispensable pour l'exécution?
par la même occasion, j'essaie de demander à l'ordinateur de télécharger une image quand on clique sur un bouton si celui d'à côté est déjà programmé avec une image différente, comme cela :
Private Sub x12_Click()
If x11.Picture = Picture("C:\Users\alice\Desktop\im1.jpg") Then x12.Picture = LoadPicture("C:\Users\alice\Desktop\im1.jpg ")
end if
mais l'action x11.Picture = Picture("..") ne vérifie pas l'image qui est programmée pour ce bouton, ni x11= Picture(".."), je ne trouve pas la modification qu'il faudrait apporter sur les exemples en ligne, pourriez vous me conseiller également là dessus? merci beaucoup!
Private Sub x12_Click()
If x11.Picture = Picture("C:\Users\alice\Desktop\im1.jpg") Then x12.Picture = LoadPicture("C:\Users\alice\Desktop\im1.jpg ")
end if
mais l'action x11.Picture = Picture("..") ne vérifie pas l'image qui est programmée pour ce bouton, ni x11= Picture(".."), je ne trouve pas la modification qu'il faudrait apporter sur les exemples en ligne, pourriez vous me conseiller également là dessus? merci beaucoup!
Non, à ma connaissance on ne peut pas retrouver le nom d'une image qui a été chargée précédemment.
Mais on peut le faire quand même grâce à la propriété Tag dont disposent la plupart des contrôles. Le "Tag" est une zone de texte libre, à la disposition du programmeur.
Il suffit d'enregistrer le nom de l'image dans la propriété Tag quand tu la charges :
Ensuite, tu peux tester le "Tag" de x11 pour retrouver le nom de fichier
Mais on peut le faire quand même grâce à la propriété Tag dont disposent la plupart des contrôles. Le "Tag" est une zone de texte libre, à la disposition du programmeur.
Il suffit d'enregistrer le nom de l'image dans la propriété Tag quand tu la charges :
NomImage="C:\Users\alice\Desktop\im1.jpg" x11.Picture = LoadPicture(NomImage) x11.Tag=NomImage
Ensuite, tu peux tester le "Tag" de x11 pour retrouver le nom de fichier
NomImage="C:\Users\alice\Desktop\im1.jpg" if x11.Tag<>NomImage Then x12.Picture=Loadpicture(NomImage) end if