Fonction lire couleur case en RVB

Raka

XLDnaute Occasionnel
Bonjour !

Je souhaite additionner les valeurs présentes dans les cases d'une ligne, si ces cases sont colorées (via un sub VBA) selon un certain RVB (qui n'est pas une couleur "classique" donc.)

J'ai donc créé un module, et j'y ai inséré cette fonction pour me faciliter la vie (puisque j'ai plus de 600 lignes à calculer)


VB:
Function SommeSiCouleurFond(Plage As Range, NumeroDeCouleur%) As Double
Application.Volatile True
Dim wCell As Range
For Each wCell In Plage
If wCell.Interior.ColorIndex = NumeroDeCouleur Then
SommeSiCouleurFond = SommeSiCouleurFond + wCell.Value
End If
Next
End Function

Seulement, j'aimerais pouvoir, dans la fonction, demander à lire le code RVB plutôt que le code couleur Excel : SommeSiCouleurFond(Plage ; (0,250,100)) par exemple.
Ce serait plus pratique pour moi. Je pense que ça ne doit pas être très très compliqué, mais je n'arrive pas à mettre le doigt sur la façon exacte de faire.
 

VIARD

XLDnaute Impliqué
Bonjour Raka et à tous

Je viens de réaliser une petite manip pour t'aider


VB:
Option Explicit
'===================
Sub Manip_Couleur()
Dim x%, IntColor&, ValCol&, Lg%, Col1%
Dim HexDigits
Dim Blue%, Green%, Red%

Lg = 10: Col1 = 3
x = Cells(10, 2).Value 'mettre une valeur d'index couleur en (B10)
Cells(1, Col1).ColumnWidth = 3
Columns("C:C").HorizontalAlignment = xlCenter
Cells(1, Col1).Font.Bold = True
Cells(Lg, Col1).Interior.ColorIndex = x
Cells(Lg, Col1).Value = x
IntColor = Cells(Lg, Col1).Interior.Color
        HexDigits = Hex(IntColor)
        Call Calcul_RGB(HexDigits, Blue, Green, Red)
        ValCol = CDbl(Blue) + CDbl(Green) + CDbl(Red)
        Cells(Lg, Col1 + 1).Value = "RGB (" & Red & "," & Green & "," & Blue & ")"
        If ValCol > 256 Then
            Cells(Lg, Col1).Font.ColorIndex = 1
        Else
            Cells(Lg, Col1).Font.ColorIndex = 2
        End If
End Sub
'====================
Sub Calcul_RGB(ByVal HexDigits As Variant, Blue%, Green%, Red%)
     Do Until Len(HexDigits) = 6
            HexDigits = "0" & HexDigits
     Loop
        Blue = Val("&h" & Left(HexDigits, 2))
        Green = Val("&h" & Mid(HexDigits, 3, 2))
        Red = Val("&h" & Right(HexDigits, 2))
End Sub
'====================

Tu mets une valeur index en B10 et tu appels la procédure.

A+ Jean-Paul
 

Discussions similaires

Réponses
4
Affichages
510

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 137
dernier inscrit
Billly