VBA Excel - Retrouver RGB à partir de ColorIndex

VBA Excel - Retrouver RGB à partir de ColorIndex - VB/VBA/VBS - Programmation

Marsh Posté le 17-01-2006 à 16:16:02    

On peut fixer une couleur de la palette du classeur en faisant
.Color = RGB (R, G, B)
Mais peut obtenir les composantes RGB à partir de .Color ?
 
Je donne ma langue au tchat ...


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
Reply

Marsh Posté le 17-01-2006 à 16:16:02   

Reply

Marsh Posté le 17-01-2006 à 20:01:30    

Voici une petite fonction maison pour faire cela.
(Noter l'antislash à la place du slash pour avoir une division sans arrondi)

Sub show_col()
    c = Cells(1, 1).Interior.Color
    bleu = c \ 65536
    vert = (c - bleu * 65536) \ 256
    rouge = c - bleu * 65536 - vert * 256
    MsgBox (rouge & ", " & vert & ", " & bleu)
End Sub

Reply

Marsh Posté le 07-03-2006 à 14:49:28    

ça ne marche pas ta solution => essaye avec la couleur de fond d'un bouton....

Reply

Marsh Posté le 07-03-2006 à 17:11:52    

En admettant que sa fonction soit correcte (j'ai pas détaillé mais ça me semble bon), je pense que le problème vient du fait que les boutons et autres objets n'ont pas de couleur RGB mais une couleur indexée sur la palette système.
Cela permet de changer la couleur en modifiant les paramètres d'apparence de windows notamment.

Reply

Marsh Posté le 14-09-2006 à 08:13:11    

Ca marche tres bien.
 
Comme l'a precisé olivthill, il ne faut pas oublier de faire les operation avec un "\" et non avec un "/" (sinon, faire un cast des valeur en int. par exemple bleu = Int(c / 65536) )


Message édité par kurisutofujp le 14-09-2006 à 10:03:54
Reply

Marsh Posté le 15-09-2006 à 06:41:38    

 

 
    Dim CoulRVB As Long
    Dim Bleu As Integer
    Dim Vert As Integer
    Dim Rouge As Integer
 
    CoulRVB = ActiveCell.Interior.Color
 
    Rouge = Int(CoulRVB Mod 256)
    Vert = Int((CoulRVB Mod 65536) / 256)
    Bleu = Int(CoulRVB / 65536)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed