Actualiser couleur de fond en fonction d'un contrôle "toupie"

sTERZOCK

XLDnaute Nouveau
Bonjour,
Dans l'exemple ci joint je désirerai que la zone colorée soit automatiquement mise à jour dès que l'on appuie sur les flèches + ou - des contrôles "toupies".
Bien qu'ayant tenté sans succès d'utiliser en VBA "Calculate" ou "Refresh" de la feuille ou "RefreshAll" du classeur, la mise à jour de la couleur témoin ne se fait qu'en sortant du contrôle par sélection d'une cellule...
J'ai essayé en créant une macro associée au contrôle ou en utilisant le code de la feuille 1 (clic droit sur l'onglet dela feuille et "Visualiser le code").

Quelqu'un saurait-il?
Merci
 

Pièces jointes

  • TestVariationCouleur.xlsm
    16.4 KB · Affichages: 62
  • TestVariationCouleur.xlsm
    16.4 KB · Affichages: 75
  • TestVariationCouleur.xlsm
    16.4 KB · Affichages: 75

Dranreb

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonjour

J'ai essayé avec une Worksheet_Change, quand même plus logique que _SelectionChange, mais chez moi ça ne marche pas non plus.
Il ne reste plus qu'à affecter aux boutons toupies une macro de module ordinaire qui le fasse. Ou prendre des boutons toupies ActiveX. Ou faire ça dans un Userform.
Remarque sans rapport avec ça: Attention, si le calcul est fait directement sur les composantes RGB, un mélange à 50% de blanc et de noir donne un gris plus sombre que celui d'un damier fin à égalité de surfaces de motifs blancs et noirs.
 

Modeste geedee

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonsour®
dans le code de la feuille 1
VB:
Sub Compteur6_QuandChangement()
Range("e4:f4").Interior.Color = RGB([b4], [c4], [d4])
DoEvents
End Sub

Sub Compteur7_QuandChangement()
Range("e4:f4").Interior.Color = RGB([b4], [c4], [d4])
DoEvents
End Sub
 

sTERZOCK

XLDnaute Nouveau
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Merci de vos réponses

Modeste, je n'arrive pas à faire fonctionner ton code qui pourtant me semble parfait! problème de traduction?
Compteur6_QuandChangement par --> Controlspinner6_Change?
En attendant j'ai une solution moins élégante

Dans le code de la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'COLORIAGE DES ZONES
With Worksheets("Feuil1")
ChangementCouleur
End With
End Sub

et le code de la macro ChangementCouleur (associée aux deux contrôles toupies"

Sub ChangementCouleur()
With Worksheets("Feuil1")
.Range("E4:F4").Interior.Color = RGB(.Range("B4").Value, .Range("C4").Value, .Range("D4").Value)
End With
End Sub

La modif couleur ne prend effet que lorsqu'on relâche le bouton gauche de la souris. C'est déjà ça...

Modeste, si tu peux m'éclairer sur la mise en place de ton code
Merci d'avance
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonjour à tous

Ma version
 

Pièces jointes

  • TestVariationCouleur.xlsm
    19.4 KB · Affichages: 72
  • TestVariationCouleur.xlsm
    19.4 KB · Affichages: 72
  • TestVariationCouleur.xlsm
    19.4 KB · Affichages: 74

JCGL

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonjour à tous,
Salut PJ,

Il me semble que ta version n'est pas celle sur laquelle tu as du travailler.

A++
A+ à tous
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonsour®
Merci de vos réponses

Modeste, je n'arrive pas à faire fonctionner ton code qui pourtant me semble parfait! problème de traduction?
Compteur6_QuandChangement par --> Controlspinner6_Change?

Modeste, si tu peux m'éclairer sur la mise en place de ton code
Merci d'avance
je n'ai fait qu'associer la même macro à chaque "spinner"
et supprimer la macro selection_change

Capture.jpg
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    20.6 KB · Affichages: 45
  • Capture.jpg
    Capture.jpg
    20.6 KB · Affichages: 62
  • toupie-testvariationcouleur.xlsm
    18.9 KB · Affichages: 59

pierrejean

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Re

Pour tester mon fichier du # 5 il faut:
1) modifier B4 C4 ou D4 (par exemple 256 en C4 ou D4 et 0 dans les 2 autres)
2) cliquer sur un des spin button

une seule macro en Module 1 affectée aux 2 spin button
 

Dranreb

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonjour.

Au risque de me répéter, les calculs de mélanges de couleurs basés directement sur les valeurs RGB servant à coder les couleurs n'ont pas beaucoup de sens.
Pour vous en convaincre observez ces deux dégradés et dites moi celui qui vous parait le plus juste.
Le 1èr est constituée de simples interpolations linéaires de valeurs RGB entre début et fin, le second des conversions en valeurs RGB d'interpolations linéaires des quantités de lumières entre celles de début et de fin.
 

Pièces jointes

  • DégradésEvsG.xls
    97 KB · Affichages: 76
  • DégradésEvsG.xls
    97 KB · Affichages: 71
  • DégradésEvsG.xls
    97 KB · Affichages: 73

sTERZOCK

XLDnaute Nouveau
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Merci Dranreb pour ta réponse fort intéressante que je mets dans mes archives.
Pour le moment ce n'est pas la continuité des dégradés ou des gamuts qui me préoccupe mais bel et bien le mélange de deux couleurs. Mais question concernait un outil pratique et rapide pour la visualisation de la variation du mélange.
Comme tu as l'air d'être un expert en colorimétrie je me permets de t'envoyer un message privé sur mon sujet pour ton avis et conseils éventuels.
Je ne l'expose pas ici car il dépasse le cadre de la discussion. Si d'autres sont intéressés qu'ils m'envoient un message.
Merci à tous
 

Dranreb

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonjour.

Oui mais le problème du mélange est exactement pareil puisque le milieu de mon dégradé n'est plus ni moins qu'un mélange à égalité des valeurs extrêmes.
Si la quantité de lumière E est fixée par convention à 1000 pour le blanc codé G=255, pour un mélange à égalité de blanc et de noir, il me semble qu'elle doit être E=500 qui correspond à G=186 et non pas encore moins de la moitié de ça soit E=225 correspondant à G=128 !

Faire un Userform pour cet outil. Ce sera plus pratique pour colorer des Label, TextBox, Frame, voire l'Userform lui même.
Je ne peut pas tester complètement un code qui modifie des Interior.Color de cellules avec ma version d'Excel.

Je pourrais même vous écrire un petit programme en VB6 si vous voulez.
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Actualiser couleur de fond en fonction d'un contrôle "toupie"

Bonsour®

sauf à écrire une fonction HSL(TSL) via VBA , la fonction RGB ne permet pas d'intégrer cette notion de Lumière, ni celle de saturation

Nb : Microsoft n'a pas voulu mettre cette fonctionnalité à disposition des programmeurs,
à part cette bouse incomplète de "Tint and Shade"

pourtant le code correspondant (API ?) est existant dans EXCEL depuis très longtemps :
la preuve :
RGB Capture1.JPG
HSL Capture2.JPG
:rolleyes:
RGB --> HSL
EasyRGB - The inimitable RGB and COLOR search engine!
HSL --> RGB
EasyRGB - The inimitable RGB and COLOR search engine!
 

Pièces jointes

  • Capture1.JPG
    Capture1.JPG
    29.2 KB · Affichages: 70
  • Capture1.JPG
    Capture1.JPG
    29.2 KB · Affichages: 69
  • Capture2.JPG
    Capture2.JPG
    30 KB · Affichages: 54
  • Capture2.JPG
    Capture2.JPG
    30 KB · Affichages: 55

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 107
Membres
103 120
dernier inscrit
83400ren