Macros

From The Document Foundation Wiki
< Macros‎ | Calc
Jump to: navigation, search

Simulateur du formatage conditionnel « Échelle de couleurs (2 entrées) »

Appliquer une échelle de couleur à une plage revient à afficher un dégradé bicolore ou tricolore sur cette plage en fonction de la valeur de chaque cellule.

Cette technique permet d'identifier d'un simple coup d'œil la répartition ou les écarts entre les valeurs d'une plage. Un exemple type pourrait être un tableau de températures, les plus basses colorées en bleu, les plus chaudes en rouge avec un dégradé nuançant les valeurs intermédiaires.

L'objectif de cette page du wiki est de présenter et manipuler par macro la méthode de combinaison des couleurs utilisée par le formatage conditionnel.

La couleur calculée est le mélange de chacune des composantes RVB[1] de la couleur, proportionnel à la valeur dans le tableau.


Formule de calcul pour le rouge (R) :

R=\frac{R_{Max}-R_{min}}{x_{Max}-x_{min}}\cdot(x-x_{min})+R_{min}


R : composante rouge pour la valeur x sur la même ligne

R_{Max} : composante rouge pour la couleur appliquée au maximum dans le formatage conditionnel

R_{min} : composante rouge pour la couleur appliquée au minimum dans le formatage conditionnel

x_{Max} : valeur maximum de x dans le tableau

x_{min} : valeur minimum de x dans le tableau


Dans le tableau suivant une échelle de couleur est appliquée à la plage B6:B15. Les couleurs extrêmes sont reportées en G5 et G16.

copie d'écran
B6:B15 couleurs par formatage, A6:A15 couleurs par programme


Fonctionnement de la macro :

  1. La macro « lit » d’abord les couleurs des cellules G5 et G16 et reporte les composantes RVB de ces couleurs cellules D5:F5 et D16:F16
  2. Les composantes pour chaque valeur de x sont calculées dans le tableau D6:F15 selon la formule donnée plus haut
  3. La macro lit ces composantes et applique la couleur résultante sur les cellules de la plage A6:A15


Code de la macro :

Option Explicit

Sub LitAppliqueCouleur

Dim oCellule As Object, oFeuille As object, x As Integer, lCouleur As Long, iRouge As Integer, iVert As Integer, iBleu As Integer

oFeuille = thiscomponent.Sheets.getByName("Feuille1")

'lecture de la couleur appliquée au minimum
oCellule = oFeuille.getCellRangeByName("G5")
lCouleur = oCellule.CellBackColor
'report des composantes RVB dans la Feuille
oFeuille.getCellRangeByName("D5").Value = Red(lCouleur)
oFeuille.getCellRangeByName("E5").Value = Green(lCouleur)
oFeuille.getCellRangeByName("F5").Value = Blue(lCouleur)

'lecture de la couleur appliquée au maximum
oCellule = oFeuille.getCellRangeByName("G16")
lCouleur = oCellule.CellBackColor
'report des composantes RVB dans la feuille
oFeuille.getCellRangeByName("D16").Value = Red(lCouleur)
oFeuille.getCellRangeByName("E16").Value = Green(lCouleur)
oFeuille.getCellRangeByName("F16").Value = Blue(lCouleur)

'application des couleurs d'arrière-plan aux cellules A6:A15
'selon le calcul des composantes fait dans le tableau D5:F16
For x=6 To 15
        iRouge = oFeuille.getCellRangeByName("D" & x).Value
        iVert  = oFeuille.getCellRangeByName("E" & x).value
        iBleu  = oFeuille.getCellRangeByName("F" & x).Value

        oCellule = oFeuille.getCellRangeByName("A" & x)
        oCellule.CellBackColor = RGB(iRouge, iVert, iBleu)
Next

End Sub


Télécharger le classeur exemple

Mode d’emploi du classeur exemple :

  1. Entrer des valeurs quelconques dans la plage B6:B15
  2. Modifier le formatage conditionnel appliqué à cette plage :
    • Menu Format ▸ Formatage conditionnel ▸ Gérer, sélectionner B6:B15 Éditer
    • Ne modifier que les couleurs (noter ces couleurs)
  3. Appliquer ces couleurs d’arrière-plan aux cellules G5 et G16
  4. Lancer la macro (bouton gris)


Notes :

  1. Rouge Vert Bleu, abrégé RVB (RGB en anglais), est un format de codage des couleurs. Ces trois couleurs sont des couleurs primaires utilisées en particulier pour l’affichage sur les écrans, et dans les logiciels.