Appliquer une mise en forme à plusieurs togglebutton ?

Bonjour le forum,

J'ai un Userform avec 91 togglebutton et j'aimerai que chacun de ces buttons soient d'une couleur quand il ne sont pas activés et d'une autre quand il le sont.

Seulement je n'arrive pas à trouver comment écrire cette procédure sans répéter 91 fois en changeant le numéro du bouton :

Private Sub ToggleButton1_Click()
If UserForm1.ToggleButton1.Value = True Then
UserForm1.ToggleButton1.BackColor = RGB(255,0,0)
elseIf UserForm1.ToggleButton1.Value = false Then
UserForm1.ToggleButton1.BackColor = RGB(0 ,255, 255)
end if
End Sub

C'est très fastidieux ! Je ne trouve pas comment appliquer un code à de multiple boutons.

J'ai bien essayé dans l'initialize une boucle de type :

for i =0 to 90
if Controls("togglebutton" & 1 + i).Value = True Then
Controls("togglebutton" & 1 + i)..backcolor = rgb(255,0,0)
elseif  Controls("togglebutton" & 1 + i).Value = false Then
Controls("togglebutton" & 1 + i)..backcolor = rgb(0,0,255)
end if
next 

Ce qui m'applique bien un mise en forme de mes boutons mais seulement à l'initialisation, et si je clique dessus après rien ne se passe....

Je serais preneur d'un coup de main pour trouver comment appliquer ce code à tout mes boutons sans prendre des centaines de lignes de code..

Merci !

Bonjour,

Et tu crois peut-être qu'on va se taper la création d'un Userform avec 91 ToogleButton alors que tu en a un tout chaud à la sortie du four ?

De plus la manipulation d'un USF est toujours étroitement dépendante du reste du code des autres éléments donc avec tes 3 lignes de code, ne compte pas obtenir une réponse de ma boule de cristal...

A+

Bonjour lordkrowan,

L'utilisation d'un module de classe semble tout indiqué dans ton cas.

Au lieu d'un beau discours, voilà un exemple concret.

145classeur1.xlsm (16.49 Ko)

N'hésite pas à revenir vers moi si tu as besoin de plus d'aide! Mais normalement la seule ligne à modifier est :

ReDim conteneurToggleButton(1 To 91)
For i = 1 To 91
    Set conteneurToggleButton(i).unToggleButton = Me.Controls("ToggleButton" & i)
Next i

en supposant que tes boutons sont appelés ToggleButton1 puis ToggleButton2 etc...

@Bonjour à toi galopin01 en cette heure tardive =)

Bonjour d3d9x,

Oui évidemment pour l'utilisation du module de classe. c'est la raison pour laquelle ça me semble vraiment pas possible de faire ça dans le marc de café...

De plus je ne suis pas certain qu'il soit possible de donner la couleur voulue (rouge 255 pour la valeur Vrai. En effet le ToogleButton semble avoir une propriété non modifiable qui donne un aspect grisé quand le bouton est pressé. Donc on obtient un aspect sale, vaguement rougeâtre.... Par contre on obtient une couleur franche pour (255,255,0)... (jaune clair)

Il semble que dans ce cas l'utilisation de CommandButton soit préférable.

En bref fichier joint indispensable...

A+

Re,

galopin01 : Je ne pensais pas autant vous énerver avec ma question. Je débute quelques peu dans le VBA et je pensais qu'il s'agissait là d'une question "fréquente" de mise en forme de plusieurs objets et qu'un terme ou une astuce courante existait pour cela.

J'ai juste un Userform avec 91 boutons activables, et j'aimerais que ces boutons aient une couleur différente de celle proposé par défaut.

Et oui qu'on on clic dessus il y a mélange de pixels blanc et de couleur mais ça permet quand même de mieux différencier ceux activés de ceux qui ne le sont pas.

d3d9x : Merci beaucoup pour les indications. Oui en effet mes boutons se nomment de 1 à 91 et je pense que la solution que vous proposez est celle que je recherche . Je vais essayer avec cette méthode dès que j'ai le temps et je reviens vers vous

Merci !

Bonjour,

J'ménerve pas : Je râle !

Dans ce forum on fournit un classeur de travail : un point, c'est tout. Qu'on se le dise... Hein !

Surtout pour du VBA : C'est une pièce d'horlogerie ou la plupart du temps le nom des feuilles, le contexte (l'environnement général, les éléments connexes...) ont souvent une interaction... sans parler des modules ou sont placées le macros, de l'endroit ou les variables sont déclarées. Enfin bon...

Sinon le choix de ToogleButton semble vraiment très discutable... T'as fait comment ? Tu as lancé une fourchette en l'air et elle est retombé sur la case ToogleButton ? Parce que des Labels ou des Boutons eussent été préférables...

A+

Bonjour,

Non je n'ai pas jeté une fourchette en l'air. Il s'agit d'un module de création d'activité, au moment de la création d'activité on choisi les compétences abordées lors de cette activité parmi 91.

J'ai au départ utilisé les "cases à cocher" mais je ne trouvais pas ça très lisible sur la fenêtre des 91 case cochées ou non.

J'ai donc pensé au toggle pour les faire changer de couleur en fonction de leur activation ou non activation ce qui permettrai une bien meilleur lisibilité.

Je n'ai pas envoyé le classeur simplement parce que je ne peux pas. plutôt je n'en ai pas le droit. Des données "sensibles" y sont stockées.

Merci quand même pour le coup de main.

Le fichier en lui même n'a aucun intérêt pour moi lordkrowan, la seule partie intéressante est le userform ^^

Tu ne peux pas juste joindre cette partie?

Si tu ne crée aucun contrôle de manière dynamique, le code à l'intérieur n'est même pas nécessaire, tu peux tout supprimer.

Concernant la solution que je t'ai proposé, qu'en penses-tu? acceptable, bof, nulle, merveilleuse?

Ne me laisse pas en suspense xD

d3d9x a écrit :

Le fichier en lui même n'a aucun intérêt pour moi lordkrowan, la seule partie intéressante est le userform ^^

Tu ne peux pas juste joindre cette partie?

Si tu ne crée aucun contrôle de manière dynamique, le code à l'intérieur n'est même pas nécessaire, tu peux tout supprimer.

Concernant la solution que je t'ai proposé, qu'en penses-tu? acceptable, bof, nulle, merveilleuse?

Ne me laisse pas en suspense xD

Ahahah ! Oui ça y est j'ai pu essayer, alors j'ai un message :

"erreur d'exécution 9

L'indice n'appartient pas à la sélection"

Je sais pas pourquoi, mes bouton sont bien nommés de 1 à 91 !

Je te joint mon userform

Bonjour,

Voir fichier joint.

A+

92lordkrowan.xlsm (19.16 Ko)
81lordkrowan1.xlsm (19.29 Ko)

Et voilà ma proposition.

Basiquement on fait la même chose galopin01 et moi, mais légèrement différemment. Pour ma part je préfère stocker les changements de couleur et évènements dans le module de classe. L'intérêt du module de classe est pour moi de ne pas surcharger le code du userform. A toi de choisir ce qui te convient le mieux!

Bonjour !!

Désolé de la réponse tardive ! Je ne touche pas terre en ce moment !

Cos solutions sont géniales !! Je vais bien les analyser et comprendre ce qui s'y passe.

Merci beaucoup pour votre aide ! Je n'utilisait pas les modules de classe mais maintenant je comprend leur utilité

Super forum, et super forumeurs !

Bonjour de Nouvelle Calédonie !

Rechercher des sujets similaires à "appliquer mise forme togglebutton"