comment plusieurs togglebuttons peuvent-ils appeler la même macro ?

Finrod

XLDnaute Nouveau
Bonjour.
Je suis nouveau sur le forum en tant qu'inscrit, mais j'ai déjà eu l'occasion de le parcourir à plusieurs reprises (très bon, d'ailleurs !).
Je suis à la recherche d'une solution pour le problème suivant, et je n'ai rien trouvé dans les discussions existantes qui réponde à mes interrogations.

Je suis en train de créer une sorte de QCM. Sur chaque ligne (j'en ai 100), j'ai placé 4 togglebuttons qui permettent chacun de découvrir 1 image différente (le bouton 1 révèle un carré, le 2 un losange, etc... ; la même séquence se reproduit sur les 99 lignes restantes). J'ai tenté l'approche suivante qui marche bien pour UN togglebutton avec UNE image :

Sub Togglebutton_Click()
'mise en forme suivant on/off
If ToggleButton Then
ToggleButton.BackColor = vbGreen
Else
ToggleButton.BackColor = vbWhite
End If
Forme_Click
End Sub

Sub Forme_Click()
'suivant valeur Togglebutton, révélation ou non de l'image "Forme"
If Bouton Then
Forme.visible = True
Else
Forme.visible = False
End If
End Sub


Mais je voudrais savoir comment faire appel, de manère générique, à cette procédure :
- pour que les 4 Togglebuttons d'une même ligne permettent chacun de dévoiler une image différente
- pour répeter l'opération sur les 99 autres lignes restantes

Je me vois mal écrire 400 fois la même procédure:confused:, je pense qu'il doit y avoir plus sioux...

Merci de votre aide !
 

Finrod

XLDnaute Nouveau
Re : comment plusieurs togglebuttons peuvent-ils appeler la même macro ?

Bonjour Michel

Ouch, ça dépasse "un peu" mes modestes compétences en vba:(. Je vais aller fureter un peu sur ce thème et en fonction, je reviendrai probablement faire un tour ici.

Merci
 

chris

XLDnaute Barbatruc
Re : comment plusieurs togglebuttons peuvent-ils appeler la même macro ?

Bonjour
Coucou Michel ;)

Il y a une solution moins performante que les modules de classe mais qui allège un peu : déporter plus du code du togglebutton ver la procédure Forme_Click() en lui passant des paramètres.

Si tu n'a jamais échangé de paramètres entre procédures c'est déjà une bonne progression de tes compétences, les classes étant en haut de la pyramide de complexité...

Exemple : charger la procédure de ces lignes
If ToggleButton Then
ToggleButton.BackColor = vbGreen
Else
ToggleButton.BackColor = vbWhite
End If
en lui passant l'objet button à colorer et la forme attachée à ce bouton : ainsi une seule procédure Forme_Click() mais toujours autant de Togglebutton_Click()
 

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 974
dernier inscrit
chmikha