Déterminer l'intensité d'une couleur

Magic_Doctor

XLDnaute Barbatruc
Bonjour à tous,

Je change la couleur d'une cellule dans laquelle il y a un chiffre.
Supposons que la couleur de la cellule soit bleu ciel et la couleur du chiffre noire. Jusque là tout va vien, le noir du chiffre se détache bien du fond.
Maintenant je décide que la couleur de la cellule soit bleu marine. Maintenant on ne verra quasiment plus le chiffre.
Peut-on déterminer l'intensité d'une couleur et ainsi, à partir d'une certaine intensité de la couleur de la cellule, spécifier que la couleur du chiffre soit, par exemple, blanche afin que le chiffre soit toujours visible ?

Merci pour tout conseil.
 

tototiti2008

XLDnaute Barbatruc
Re : Déterminer l'intensité d'une couleur

Bonjour Magic_Doctor,

C'est là qu'on voit qu'ils on un peu plus peaufiné la présentation sur Word que sur Excel
Sur Word, si tu mets un texte en couleur Automatique, avec un fond de couleur très sombre le texte s'écrit automatiquement en blanc
Sur Excel, on dirait qu'ils ont oublié de le faire...Comme quoi les équipes Microsoft ne se parlent toujours pas beaucoup ;)
 

tototiti2008

XLDnaute Barbatruc
Re : Déterminer l'intensité d'une couleur

Bonjour à tous,

Un essai par MFC
Marche bien sur 2007, mais Attention, me fait planter Excel 2003

Edit : Calcul de la luminosité piqué là : vbAccelerator - Hue Luminance and Saturation (HLS) Model and Manipulating Colours
 

Pièces jointes

  • MFC CouleurTexte.xlsm
    15.4 KB · Affichages: 87

Magic_Doctor

XLDnaute Barbatruc
Re : Déterminer l'intensité d'une couleur

Re,

Pas dans un USF mais sur la feuille.
job75 m'avait concocté une procédure permettant de changer instantanément la couleur de fond d'une feuille sans pour autant altérer les tableaux s'y trouvant. Il se trouve que pour des raisons, disons, ergonomiques j'ai choisi de faire apparaître, suivant les cas, un "Label" dans lequel il y a un chiffre.
Si d'aventure je décide de choisir une couleur obscure pour le fond de la feuille, bien évidemment le "Label" va prendre cette couleur, mais comme son texte est noir, on ne voit plus grand chose.
Voici la procédure :
Private Sub CommandButtonCF_Click()
'Déclenche la macro qui permet le changement de la couleur de fond de la feuille
'Job75 / Magic_Doctor

Dim NumFeuille As Variant, Zone As Range, coul As Long

'Récupère le numéro de la feuille sélectionnée dans la liste du "ComboBox1"
NumFeuille = Application.VLookup(ComboBox1, [ListeOnglets1], 2, 0)
If IsError(NumFeuille) Then Exit Sub

Set Zone = Evaluate("Zone" & NumFeuille)
MiseEnFormeFond [CouleurFond], Zone, 2

'Mise en forme du "Label1"
If Sheets(NumFeuille).Name = "Relookage" Then
coul = [CouleurFond].Interior.Color
ActiveSheet.Label1.BackColor = coul
End If

End Sub
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Déterminer l'intensité d'une couleur

Re,

Si tu rajoutes les fonctions dec2rvb et luminosite de mon dernier classeur dans ton code, je pense que ça devrait donner ça

Code:
'Mise en forme du "Label1"
If Sheets(NumFeuille).Name = "Relookage" Then
    coul = [CouleurFond].Interior.Color
    ActiveSheet.Label1.BackColor = coul
if luminosite(coul)<128 then ActiveSheet.Label1.ForeColor = &HFFFFFF
End If

Pas super avec le jaune, ma fonction
Il y a surement mieux pour calculer la luminosité
 

Magic_Doctor

XLDnaute Barbatruc
Re : Déterminer l'intensité d'une couleur

Re,

Merci tototiti2008 ça marche tès bien.
En ce qui concerne le jaune tu as tout à fait raison et le seul moyen d'y palier n'est pas forcément de peaufiner ta fonction qui marche très bien (du moins à partir d'Excel 2007) mais de stipuler que lorsque la couleur est dans un ton jaune, quelle que soit alors son intensité la couleur des caractères devra rester noire.
J'ai fait une légère modification afin que la couleur du chiffre dans le "Label" ne soit pas définitivement blanche :
If Sheets(NumFeuille).Name = "Relookage" Then
coul = [CouleurFond].Interior.Color
With ActiveSheet.Label1
.BackColor = coul
.ForeColor = IIf(Luminosite(coul) < 128, &HFFFFFF, &H0)
End With
End If

A+
 

Dranreb

XLDnaute Barbatruc
Re : Déterminer l'intensité d'une couleur

Bonsoir
C'est un problème que je gère complètement dans cette petite application, non pas pour un label mais pour userform tout entier !
Il est vrai qu'elle est équipée d'un solide module de calcul de couleurs, mais qui est tout à fait utilisable en VBA si ça vous intéresse.
À +
 

Pièces jointes

  • Couleurs.zip
    52.6 KB · Affichages: 47
  • Couleurs.zip
    52.6 KB · Affichages: 51
  • Couleurs.zip
    52.6 KB · Affichages: 47

Discussions similaires

Statistiques des forums

Discussions
312 612
Messages
2 090 229
Membres
104 453
dernier inscrit
benjiii88