Couleurs variables dans UserForm

Y

YeTi

Guest
Bonjour,

Je suis en train de développer une petite application et j'ai besoin d'une prévisualisation. Voici une petite image pour vous donner une idée:



Le but est donc, que quand on sélectionne un OptionButton, la couleur correspondante s'affiche dans la partie 'Couleur principale' de la prévisualisation.

Voici une partie du code:
Code:
'Prévisualisation
Private Sub OptionButton1_Click()
Me.Controls('CoulPrinc1').BackColor = Me.Controls('Image1').BackColor
Me.Controls('CoulPrinc2').BackColor = Me.Controls('Image1').BackColor
End Sub

Private Sub OptionButton2_Click()
Me.Controls('CoulPrinc1').BackColor = Me.Controls('Image2').BackColor
Me.Controls('CoulPrinc2').BackColor = Me.Controls('Image2').BackColor
End Sub

Le problème c'est que je ne veux pas taper ce code 56x... Alors j'ai pensé à faire une boucle mais je me rend compte que ca ne peut pas marcher, regardez:

Code:
'Prévisualisation
Private Sub 'OptionButton' & i_Click()
For i = 1 To 56
Me.Controls('CoulPrinc1').BackColor = Me.Controls('Image' & i).BackColor
Me.Controls('CoulPrinc2').BackColor = Me.Controls('Image' & i).BackColor
Next i
End Sub

Comme le 'i' de 'OptionButton' est placé avant la déclaration de la variable i, ca me crée une erreur... Est-ce que qqn a une solution?
 

Hervé

XLDnaute Barbatruc
Bonjour yeti

Si ton fait déclencheur pour le changement de couleur est l'appui sur un optionbutton tu ne peux pas utiliser une boucle, et tu ne fera pas l'économie de 56 macros, tu peux toutefois simplifier le travail comme ceci :


Private Sub OptionButton1_Click()
couleur 1
End Sub
'___________________________________________
Private Sub OptionButton2_Click()
couleur 2
End Sub
'___________________________________________
Public Sub couleur(numero As Byte)
Me.Controls('CoulPrinc1').BackColor = Me.Controls('Image' & numero).BackColor
Me.Controls('CoulPrinc2').BackColor = Me.Controls('Image' & numero).BackColor
End Sub


sinon, tu peux utiliser un bouton pour le déclenchement et là, une boucle est envisageable :


Private Sub CommandButton1_Click()
Dim i As Byte

For i = 1 To 56
       
If Controls('optionbutton' & i) Then
                Me.Controls('CoulPrinc1').BackColor = Me.Controls('Image' & i).BackColor
                Me.Controls('CoulPrinc2').BackColor = Me.Controls('Image' & i).BackColor
       
End If
Next i
       
End Sub

Sinon, 3ème possibilité : le module de classe, mais ca, c'est une autre question.

salut
 

Jacques87

XLDnaute Accro
Bonjour

En effet tu ne peux pas intégrer une variable dans l'appel d'une procédure comme tu le préconises

Transforme donc ta procédure évennementielle en procédure toute simple à placer dans un Module
Tu pourras appeler cette procédure autant de fois que tu le voudras

Private Sub OptionButton1_Click()
Me.Controls('CoulPrinc1').BackColor = Me.Controls('Image1').BackColor
Me.Controls('CoulPrinc2').BackColor = Me.Controls('Image1').BackColor
End Sub

devient

Sub Bouton(Image As String)
Me.Controls('CoulPrinc1').BackColor = Me.Controls(Image).BackColor
Me.Controls('CoulPrinc2').BackColor = Me.Controls(Image).BackColor
End Sub

et quand tu voudras appeler cette procédure grace au bouton 3 par exemple :

Private Sub OptionButton3_Click()
Call Bouton ('Image3')
End Sub

Bon courage
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Tiens j'avais développé un petit truc pour choisr une couleur de fond et une couleur de texte avec des boutons

Bien sûr là c'est sorti du contexte mais cela peut te donner une idée d'un module de classe

Perso les couleurs change sur le bouton nommé Validation des données qui ensuite alimentait d'autres choses mais là j'ai supprimé pour l'exemple [file name=Classeur2_20060130120347.zip size=14826]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur2_20060130120347.zip[/file]
 

Pièces jointes

  • Classeur2_20060130120347.zip
    14.5 KB · Affichages: 69

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 237
Membres
103 497
dernier inscrit
JP9231