Repetition d'une fonction private sub en VB - VB/VBA/VBS - Programmation
Marsh Posté le 25-04-2006 à 15:36:33
Ta descrition n'est pas très précise mais tu tu créer une fonction
Image_Click avec le nom de l'objet en argument et appeler cette fonction a chaque click
Marsh Posté le 26-04-2006 à 08:53:50
Pour préciser un petit peu:
Je créer un programme avec 3840 objets "Image" ou "PictureBox". Les 3840 objets réagissent de la même façon si on leur clique dessus. Mon problème est que je dois répéter pour chacun des objets. Je recherche donc une solution pour éviter cette répétition assez lourde.
Pour passez le nom en paramètre:
Si je dois passer le nom en paramètre je dois définir une fonction pour chaque objet nan ? Comment récuperer le nom de l'objet et lexploiter ?!
Marsh Posté le 26-04-2006 à 09:03:58
Ton formulaire doit avoir une collection accessible via .Controls() à laquelle tu peux passer le nom de ton image ou picturebox en paramètre :
Me.Controls("Image1" ).BackColor = &HFFFFFF |
Ta procédure ImageX_Click() est un évènement lié au control ImageX. Il n'est pas possible de s'en affranchir si tu veux gérer cet évènement. Tu dois donc écrire une fonction qui passera le nom de ton control en paramètre et qui sera appelée dans chacun des évènements.
Je crois qu'il est techniquement possible de créer tes controls à l'exécution et d'associer du code à leurs évènements, mais je ne suis pas sûr que tu y gagnerais en temps de programmation, maintenance et lisibilité de code.
Marsh Posté le 25-04-2006 à 11:03:45
Salut !
Je dois répéter la fonction ci dessous 3840 fois car j'ai 3840 objets différents... y a t il un moyen de faire une sorte de boucle ou reussir à choper le nom de l'objet sur lequel l'utilisateur clique autre. En fait je cherche un moyen de ne pas répéter 3840 fois la même fonction car ça prend beaucoup de ligne et niveau lisibilité c'est moyen je trouve. (ImageX => X varie de 1 a 3840)
Private Sub ImageX_Click()
If ImageX.BackColor = &H0& Then
ImageX.BackColor = &HFFFFFF
ImageX.tag = 0
a = MAJ_vu()
Else
ImageX.BackColor = &H0&
ImageX.tag = 1
a = MAJ_vu()
End If
End Sub
Merci d'avance
Message édité par Eagles Eyes le 25-04-2006 à 12:47:55