Associer couleur à des controles bouton

Fermé
norma - 22 oct. 2010 à 15:03
 Norma - 3 nov. 2010 à 15:14
Bonjour,
voilà le problème, on me demande de faire un travail mais je coince !
j'ai une liste de validation de couleur : jaune, rouge, bleu, etc où je peux choisir de voir la couleur dans une cellule
maintenant j'ai des boutons contrôle et il faudrait que si je choisi le bleu dans la liste, tous les boutons concernés doivent être bleu aussi.
je ne sais pas du tout comment faire?
quelqu'un peut-il m'aider à écrire la macro qui permettrait ce changement?
merci d'avance
norma


A voir également:

23 réponses

voiçi qq compléments :
j'ai 1 cellule, liste de validation en C3 et une autre en K3 : je choisi avec cela une couleur que je vois apparaitre.
maintenant j'ai 9 boutons qui seront rattachés à chacune de ces cellules : si je choisi la couleur jaune en C3, je voudrais que tous les 9 boutons rattachés passent en jaune
si je choisi la couleur rouge en K3, je voudrais que tous les 9 boutons rattachés passent en rouge
etc...
si j'essaye les controle, je n'y arrive pas
avec les controles activex, ça me semble aussi compliqué
please, help me; thanks
norma
congratulations
0
Bonjour, quelqu'un peut-il m'aider, je suis complétement dans l'inconnu ?
merci d'avance
0
cousinhub29 Messages postés 955 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 15 novembre 2024 344
23 oct. 2010 à 16:52
Bonjour,

Comme j'ai la flemme de recréer un fichier, pourrais-tu joindre un exemple, avec les listes de validation, ainsi que les boutons associés?

Pour cela, utilise le site :

http://www.cijoint.fr/</code>


@ te relire
0
m@rina Messages postés 21080 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 15 novembre 2024 11 351
23 oct. 2010 à 17:36
Bonjour,

On ne comprend pas bien ton problème. Les boutons dont tu veux modifier la couleur, ils sont où ?

- Dans une UnserForm
- Dans la feuille Excel

S'ils sont dans la feuille Excel, quel est le type de ces boutons :

- des contrôles de formulaire ?
- des contrôles ActiveX ?

Comment ta liste de validation fait-elle apparaître les couleurs ? Mise en forme conditionnelle ?

Et enfin, quelle est ta version d'Excel ?

m@rina

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bonjour et merci tout d'abord

tous les boutons sont une feuille excel (2007)
je préférerais qu'ils soient en controle de formulaire qu'en activex, mais bon, c'est à voir (c'est pour les macro, c'est plus facile je crois)
en ce qui concerne la liste de validation elle ne fait pas apparaitre les couleur, mais simplement les noms des couleurs ; je ne sais pas comment faire apparaitre les couleurs aussi

voilà pour répondre à vos questions.
je peux vous donner d'autres renseignements si nécessaire
merci
norma
0
cousinhub29 Messages postés 955 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 15 novembre 2024 344
24 oct. 2010 à 12:41
Bonjour,

Bon, comme tu ne "veux" pas donner de fichier exemple...

Regarde le fichier joint, fait à partir de "Contrôle Active X", bien plus simple à manier qu'un "Formulaire", contrairement à ce que tu dis

http://www.cijoint.fr/cjlink.php?file=cj201010/cijqWZeXOr.zip

Cependant, il est fort probable, que cet exemple ne soit pas ce que tu voudrais...

Ben, tant pis, je t'avais demandé un exemple..
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
24 oct. 2010 à 13:38
Salut Cousinhub,

Question pertinente, mais pas de collaboration de la part du demandeur, je ne vois pas pourquoi on se fatiguerai à créer des exemples sur des suppositions nous ne sommes que des bénévoles pas de boites vocales
dommage la question est proche et certainement la même d'une discussion récente sur Comment ça marche

Cordialement

Mike-31
0
Bonjour,
pourquoi ces réactions "agressives" ? je ne comprends pas.
cela ne me pose pas de problème de donner un exemple de fichier, je réponds dans un 1er temps aux questions qui m'ont été posées et je fais avancer mon travail comme je peux pour vous solliciter dès que j'ai besoin.
Calmez-vous s'il vous plaît !
en effet j'ai déjà vu des réponses qui pouvaient m'aider dans des discussions récentes, mais cela ne semblait pas correspondre à ce que je "voulais".
en tout cas le gros travail effectué par CousinHub est très proche de ce que je cherche.

cela dit il s'agit d'activex et le comment puis je avoir les couleurs que je souhaite ?
ce n'est pas comme avec des contrôle de formulaire !
exemple le violet = 29, le jaune = 6 etc.....

ensuite comment faire apparaitre les couleurs dans le menu déroulant en haut de votre exemple.

merci encore de votre aide, je vous tiens au courant des "avancées".
cordialement
Norma
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
24 oct. 2010 à 16:50
Re,

Il n'y a pas d'agressivité, mais il faut comprendre que nous sommes bénévoles et intervenons plusieurs fois par jour et souvent sur plusieurs forums. Comme tout intervenant qui se respecte avant de donner une réponse nous testons nos codes et pour cela nous devons créer un fichier exemple, il est logique que ce support soit mis à notre dispositions par le demandeur surtout lorsqu'on lui demande.

Pour changer la couleur du bouton, Activer le mode création/clic droit sur le bouton/visualiser le code/dans les propriétés du bouton (marge gauche) chercher BlackColor et sélectionner la couleur (ex. de code &H00FF00FF&)
pour changer la couleur par rapport à une valeur contenue dans une cellule, un code VBA s'impose
0
d'accord, mais M@rina m'avait posé des questions et je lui répondais; c'est la moindre des choses.
comme plusieurs personnes ont répondues, j'ai fait au mieux.
revenons à mon sujet........ le travail de CousinHub est en partie ce que je cherche...........comme quoi!
comment dois-je faire pour faire apparaitre la couleur dans le menu déroulant qui conditionne la couleur des autres boutons.
en d'autre termes voir apparaitre la couleur dans le menu et les boutons correspondants de la même couleur
merci
0
autre petite question, j'ai mis des boutons couleur noire et évidemment on ne voit plus le texte du bouton.
comment dois-je intégrer le fait que si le bouton est noir, la police doit être blanche dessus.?
ceci dans le code vba du doc de CousinHub
merci encore
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 24/10/2010 à 17:24
Re,

Tu ne peu pas faire apparaitre les couleurs dans une liste déroulante, ce que tu peux faire, c'est une liste déroulante avec les nom de couleur ex. rouge, bleu etc et écrire un code qui en fonction du nom de la couleur sélectionner coloriser la tête du bouton
C'est le code de Cousinhub
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
OK et ma question sur le fait d'intégrer la police blanche sur les boutons à fond noir.
j'ai essayé dans le code de Cousinhub, mais ça ne donne rien; du style rajouté ceci: (en gras ce que je met)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Coul As Long
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Target.Address = "$C$3" Or Target.Address = "$K$3" Then
Select Case Target
Case "Rouge"
Coul = &HFF&
Case "Bleu"
Coul = &HFF0000
Case "Vert"
Coul = &HFF00&
Case "Jaune"
Coul = &HFFFF&
Case "noir"
Coul = &H0&
Case "violet"
Coul = &HC000C0
Case "orange"
Coul = &H80FF&
Case "noir"
Coul = &H0&
Case "bleu foncé"
Coul = &HC00000

End Select
Select Case Target.Address
Case "$C$3"
For Each Shp In Sheets("Feuil1").OLEObjects
If Right(Shp.Name, Len(Shp.Name) - 13) <= 9 Then
Shp.Object.BackColor = Coul
End If
If Right(Shp.Name, Len(Shp.Name) - 13) <= 9 Then
Shp.Object.BackColor = Coul ("noir")
shp.object.forecolor = coul ("blanc")
End If

Next Shp
Case "$K$3"
For Each Shp In Sheets("Feuil1").OLEObjects
If Right(Shp.Name, Len(Shp.Name) - 13) > 9 Then
Shp.Object.BackColor = Coul
End If
Next Shp
End Select
End If
End Sub


pourquoi ça ne fonctionne pas ?
merci
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
24 oct. 2010 à 18:30
Re,

Tiens un code plus basique et peut être plus simple pour toi à utiliser

Private Sub Worksheet_Change(ByVal Target As Range)
If [C3] = "rouge" Then
CommandButton1.BackColor = &HFF&
ElseIf [C3] = "violet" Then
CommandButton1.BackColor = &HFF80FF
ElseIf [C3] = "vert" Then
CommandButton1.BackColor = &HFF00&
ElseIf [C3] = "bleu" Then
CommandButton1.BackColor = &HFFFF00
End If
If [C3] = "noir" Then
CommandButton1.BackColor = 0
CommandButton1.ForeColor = &HFFFFFF
Else
CommandButton1.ForeColor = &H80000012
End If
End Sub
0
re, en fait après avoir bien revu mon application, il y a 9 boutons activex affectés à chacun des 2 menus déroulants, un en D3 et l'autre en K3.

tous les boutons (les 9) liés à la cellule D3 doivent prendre la couleur et pareil pour l'autre.

Les commandbutton vont donc de 1 à 9 pour la 1ère série puis de 10 à 18 pour la seconde série.

peut-être y aurait-il une macro qui tiendrait compte de tous les paramètres décrit ?

merci encore
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 24/10/2010 à 18:47
C'est pour cela si on avait un fichier le problème serait résolu depuis l'intervention de M@rina ou Cousinhub
Tu change [C3] par [D3]
et dans chaque if tu rajoutes le nom de tes boutons concernés
CommandButton1.BackColor = 0
CommandButton2.BackColor = 0
CommandButton3.BackColor = 0


Tu pourrais également jouer avec le gras

If [C3] = "noir" Then
CommandButton1.BackColor = 0
CommandButton1.ForeColor = &HFFFFFF
CommandButton1.Font.Bold = True
Else
CommandButton1.ForeColor = &H80000012
CommandButton1.Font.Bold = False
End If

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
je veux bien vous envoyer mon fichier, mais ce qui me gêne c'est qu'il puisse être consulté par d'autres personnes.
si vous avez une solution je vous écoute
cordialement


ps : j'ai essayé sur cette application et ça ne fonctionne pas
A+
norma
0
http://www.cijoint.fr/cjlink.php?file=cj201010/cijXd2xOSZ.xlsm
voiçi un exemple
ça ne fonctionne pas
A+ et merci
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
25 oct. 2010 à 09:53
Re,

Dans ton code si tu saisis
Case "Rouge" rouge avec une majuscule il est impératif que dans ta liste déroulante tu utilises le même critère, si rouge minuscule, de même tu saisis Jaune dans le code et jaunefluo dans la liste déroulante etc ... les conflit viennent en partie de la

Deuxième cause, tu as deux lignes dans ton code

For Each Shp In Sheets("Feuil1").OLEObjects

il faut que le nom de la feuille soit exactement le même que celui saisis dans le code, les données doivent être en symbiose et la ligne doit être écrite

For Each Shp In Sheets("programme").OLEObjects

ou éventuellement comme cela si la feuille contenant les boutons est en deuxième position dans le classeur, je te conseille d'utiliser la ligne précédente avec nom de la feuille

For Each Shp In Sheets(2).OLEObjects
0
re et merci de ma répondre
voilà d'autres questions :
1) je n'arrive pas à rentrer le code bleuciel, il me le refuse et met les boutons en noir ?
2) la question des boutons noirs restent d'actualité; comment faire pour que si je sélectionne noir, la police soit blanche sur les boutons. seulment pour le noir ?
3) quand je fais un changement dans le code, il faut que je ferme l'application pour la relancer et constater le résultat. est-ce normal ?
MERCI A+
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 25/10/2010 à 21:11
Re,

J'aurai préféré que Cousinhub retouche son code et ne pas avoir à le retoucher à sa place. Pour ne pas laisser cette discussion dans l'impasse je vais te donner un coup de pouce et commencer par répondre à la deuxième question:
si tu dois relancer Excel pour retrouver ses fonctionnalités, c'est certainement parce que ton code VBA plante suite à une erreur de ton code. Il y à une autre façon pour suspendre le blocage en allant dans le visual basic editor, maintenant tu sais y aller Exécution/Réinitialiser
Assure toi également que tu n'es pas en mode création.

Pour revenir à l'excellent code de Cousinhub j'ai déjà attiré ton attention sur le fait que les infos de ta liste déroulante et les valeurs saisies dans le code doivent être scrupuleusement identique ce qui produit un plantage du code et on retrouve ta question 2 ou tes boutons reste figé en noir.
J'ai rajouté dans le code la couleur de police en blanc lorsque la tête du bouton est noire mais également pour le bleu foncé si tu tiens uniquement à la couleur blanche pour le noir efface sur les deux lignes du code cette partie en gras

If Shp.Object.BackColor = &H0& Or Shp.Object.BackColor = &HC00000 Then

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Coul As Long
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Target.Address = "$D$3" Or Target.Address = "$K$3" Then
Select Case Target
Case "noir"
Coul = &H0&
Case "rouge"
Coul = &HFF&
Case "orange"
Coul = &H80FF&
Case "vert"
Coul = &HC000&
Case "bleu clair"
Coul = &HFFC0C0
Case "violet"
Coul = &HC000C0
Case "bleu foncé"
Coul = &HC00000
Case "jaune fluo"
Coul = &HFFFF&
End Select
Select Case Target.Address
Case "$D$3"
For Each Shp In Sheets("programme").OLEObjects
If Right(Shp.Name, Len(Shp.Name) - 13) <= 9 Then
Shp.Object.BackColor = Coul
If Shp.Object.BackColor = &H0& Or Shp.Object.BackColor = &HC00000 Then
Shp.Object.ForeColor = &HFFFFFF
Else
Shp.Object.ForeColor = &H0&
End If
End If
Next Shp
Case "$K$3"
For Each Shp In Sheets("programme").OLEObjects
If Right(Shp.Name, Len(Shp.Name) - 13) > 9 Then
Shp.Object.BackColor = Coul
If Shp.Object.BackColor = &H0& Or Shp.Object.BackColor = &HC00000 Then
Shp.Object.ForeColor = &HFFFFFF
Else
Shp.Object.ForeColor = &H0&
End If
End If
Next Shp
End Select
End If
End Sub

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0