nom de la couleur

usch

XLDnaute Nouveau
bonne soirée le forum
j'aimerais afficher le nom de la couleur d'une cellule, en langue française sipossible
je ne joints pas de fichier,car je l'utiliserai partout
'avance un grand merci
Usch
 

Dranreb

XLDnaute Barbatruc
Bonjour.
J'aurais bien un dispositif capable d'analyser une couleur, mais qui ne peut donner pour l'instant un nom qu'à la teinte dominante s'il en existe une, et ne distingue donc les gris des noir et blanc, ni si c'est clair ou foncé, marqué ou non.
 

Pièces jointes

  • CoulClsUsch.xlsm
    38.4 KB · Affichages: 67

Dranreb

XLDnaute Barbatruc
Bonjour.
…Mais comme ça à l'air d'en avoir intéressé d'autres (33 affichages indiqués) je donne quand même le dernier code :
VB:
Option Explicit

Function NomCouleur(ByVal Rng As Range) As String
   Dim Coul As New Couleur, A48&, P&, S&, Princ$, Secon$, Foncé&, Clair&
   Coul.C = Rng.Interior.Color
   If Coul.F = 0 Then
      Select Case Coul.E
         Case 0: NomCouleur = "noir"
         Case Is < 125: NomCouleur = "gris très foncé"
         Case Is < 475: NomCouleur = "gris foncé"
         Case Is <= 525: NomCouleur = "gris"
         Case Is <= 875: NomCouleur = "gris clair"
         Case Is < 1000: NomCouleur = "gris très clair"
         Case Else: NomCouleur = "blanc": End Select
   Else
      A48 = Int(Coul.A * 8 + 0.5) Mod 48: If A48 < 0 Then A48 = A48 + 48
      P = (A48 + 4) \ 8: S = A48 \ 8
      Princ = Array("rouge", "jaune", "vert", "cyan", "bleu", "magenta")(P Mod 6)
      Secon = Array("orange", "chartreuse", "émeraude", "azur", "violet", "fuchsia")(S)
      S = Abs(A48 - 8 * P): If S > 4 Then S = 8 - S
      Select Case S
         Case 0: NomCouleur = Princ
         Case 1: NomCouleur = Princ & " lég. " & Secon
         Case 2: NomCouleur = "mi-" & Princ & " mi-" & Secon
         Case 3: NomCouleur = Secon & " lég. " & Princ
         Case 4: NomCouleur = Secon
         Case Else: NomCouleur = S: End Select
      Select Case Coul.E - Coul.EThéoMin: Case Is > 400: Clair = 2: Case Is > 62.5: Clair = 1: End Select
      Select Case Coul.EThéoMax - Coul.E: Case Is > 400: Foncé = 2: Case Is > 62.5: Foncé = 1: End Select
      If Foncé > 0 Or Clair > 0 Then NomCouleur = NomCouleur & " " & Choose(Clair * 3 + Foncé, "foncé", "très foncé", _
         "clair", "délavé", "foncé délavé", "très clair", "clair délavé", "très délavé")
      End If
   Mid$(NomCouleur, 1, 1) = UCase(Left$(NomCouleur, 1))
   End Function
Mais je soupçonne encore une amélioration possible. Si vous trouvez faites le moi savoir.
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour.
…Mais comme ça à l'air d'en avoir intéressé d'autres (33 affichages indiqués)
--/--
Mais je soupçonne encore une amélioration possible. Si vous trouvez faites le moi savoir.
:) Très belle initiative , code hyper intéressant ...
mais la discrimination est imprécise pour 16 millions de couleurs possible...:(
voir pièce jointe sur un panel de 1140 couleurs nommées (collection personnelle recensées et utilisées via HTML)
quelques soucis de traduction en masse :(
upload_2018-5-6_22-40-43.png


envisager une implication de la codification HSL (teinte, saturation, luminosité):rolleyes:
 

Pièces jointes

  • couleurs dranreb.xlsx
    71.4 KB · Affichages: 54

Dranreb

XLDnaute Barbatruc
Je sais qu'il y a imprécision sur les caractéristiques autres que la teinte (48 distinctes), un peu par manque d'adjectifs.
Le but était de décrire la couleur automatiquement, non par consultation d'un dictionnaire.
Mes codifications EAF et EHJ sont disponibles dans le module de classe Couleur. HSL n'est pas envisagé, parce que la luminosité dépend de la teinte. En effet à luminosité égale les couleurs contenant du vert sont beaucoup plus claires que celles qui n'en contiennent pas, ce qui gène son choix en fonction d'une clarté apparente désirée ou de la sécurité de contrastes souhaités. Ma codification Énergie, Angle, Force n'a pas cet inconvénient.
Mais les termes clair ou foncé de la description dépendent bien de la teinte parce qu'ils décrivent la couleur par rapport à sa version saturée comportant toujours une composante nulle et une autre maximale.
 

usch

XLDnaute Nouveau
Je sais qu'il y a imprécision sur les caractéristiques autres que la teinte (48 distinctes), un peu par manque d'adjectifs.
Le but était de décrire la couleur automatiquement, non par consultation d'un dictionnaire.
Mes codifications EAF et EHJ sont disponibles dans le module de classe Couleur. HSL n'est pas envisagé, parce que la luminosité dépend de la teinte. En effet à luminosité égale les couleurs contenant du vert sont beaucoup plus claires que celles qui n'en contiennent pas, ce qui gène son choix en fonction d'une clarté apparente désirée ou de la sécurité de contrastes souhaités. Ma codification Énergie, Angle, Force n'a pas cet inconvénient.
Mais les termes clair ou foncé de la description dépendent bien de la teinte parce qu'ils décrivent la couleur par rapport à sa version saturée comportant toujours une composante nulle et une autre maximale.
 

Dranreb

XLDnaute Barbatruc
Bonsouhar.
@Modeste geedee
Il faut se rendre à l'évidence, pour décrire une couleur par rapport à la définition de sa version nominale saturée, il faut des infos luminosité et saturation. J'ai donc ajouté ces propriétés en lecture seule à mon objet Couleur, encore qu'elles se basent sur les énergies linéaires et non sur les valeurs de composantes RGB brutes, non soumises au gamma standard adopté.
Cette fois il y a beaucoup beaucoup plus de précision, sauf sur la teinte.
Mais est-ce qu'on n'est pas en train de manquer l'objectif ?
Sélectionner A1 pour recalculer l'analyse des échantillons, sur un autre entête pour classer le tout dessus.
 

Pièces jointes

  • CouleurClsModesteGeedee.xlsm
    261.4 KB · Affichages: 34

Modeste geedee

XLDnaute Barbatruc
Bonsour(®
Mais est-ce qu'on n'est pas en train de manquer l'objectif ?
:rolleyes:
usch à dit:
j'aimerais afficher le nom de la couleur d'une cellule, en langue française si possible
sur 16 millions... de couleurs possibles via le système RGB
moins de 1% ont un nom défini...
- nom quelque fois subjectif relativement à la teinte principale (clair, foncé, ...)
- nom souvent relié à des objets ou autres et sans lien objectif avec la "chromaticité"
- nom quelquefois sans équivalent en langue française.

il est évident que l'objectif est hypothétique...
nos vaines tentatives ont le mérite présomptueux d'y tendre...:cool:

L'utilisation même d'un dictionnaire de ces quelques "dénominations reconnues par l'usage" reste entaché de la difficulté à définir une quantification de proximité(teinte), clarté(luminosité), nuance(saturation)

Quelle compréhension peut-on alors accorder à :
"vermillon pâle grisâtre"
"bleu Klein foncé"
"moutarde très pâle"
?????
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

[aparté]
On peut déjà commencer avec les 56 couleurs de la palette
(J'ai vu beaucoup de code* pour lister les index et colorier les cellules en conséquence mais pas de code qui affiche le nom qui s'affiche
au survol de la souris)
[/aparté]

PS: j'oubliais que j'étais actuellement sur Excel 2003

*:Un exemple de code
VB:
Sub Couleurs56()
Dim i%, n%: n = 0
[A1:C1].Value = Array("Index", "Couleur", "Nom Couleur")
For i = 2 To 58
Cells(i, 1) = n: Cells(i, 2).Interior.ColorIndex = n
Cells(i, 3) = "Nom couleur" & n
n = n + 1
Next i
[B:B].EntireColumn.AutoFit
[A1].CurrentRegion.Borders.LineStyle = 1
End Sub

NB: Je sais qu'il suffirait de mettre les 56 noms dans un array mais apparement personne n'a encore le courage de le faire sur le web
(sauf erreur de ma part)

PS: Je n'ai pas pris en compte les travaux de ce fil dans ma précédente phrase
Je parlais juste d'un code pour les 56 couleurs de la palette.
 

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 430
Membres
102 889
dernier inscrit
monsef JABBOUR