Associer couleur à des controles bouton

norma -  
 Norma -
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
  • 2
  1. norma
     
    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
  2. norma
     
    Bonjour, quelqu'un peut-il m'aider, je suis complétement dans l'inconnu ?
    merci d'avance
    0
  3. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383
     
    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
  4. m@rina Messages postés 27459 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. norma
     
    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
  7. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383
     
    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. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      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
  8. norma
     
    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
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  10. norma
     
    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
  11. norma
     
    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
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  13. norma
     
    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
  14. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  15. norma
     
    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
  16. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  17. norma
     
    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
  18. norma
     
    http://www.cijoint.fr/cjlink.php?file=cj201010/cijXd2xOSZ.xlsm
    voiçi un exemple
    ça ne fonctionne pas
    A+ et merci
    0
  19. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  20. norma
     
    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
  21. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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