Associer couleur à des controles bouton

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

23 réponses

  1. 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
    1. Bonjour, quelqu'un peut-il m'aider, je suis complétement dans l'inconnu ?
      merci d'avance
      0
      1. 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
        1. Modérateur
          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
          1. 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
            1. 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
              1. 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
            2. 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
              1. 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
                1. 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
                  1. 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
                    1. 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
                      1. 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
                        1. 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
                          1. 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
                            1. 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
                              1. 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
                                1. http://www.cijoint.fr/cjlink.php?file=cj201010/cijXd2xOSZ.xlsm
                                  voiçi un exemple
                                  ça ne fonctionne pas
                                  A+ et merci
                                  0
                                  1. 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
                                    1. 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
                                      1. 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
                                        • 1
                                        • 2