Excel utilise une palette de couleurs composée de 56 couleurs. Vous pouvez voir ces couleurs si vous affichez l’onglet Motifs de la boîte de dialogue Format de cellule.

Lors de la création de macros dans VBA, vous souhaiterez peut-être faire référence à ces couleurs, par leur nom, à l’aide de constantes.

Malheureusement, le VBA d’Excel n’a pas de constantes définies pour chacune des 56 couleurs de la palette. Les seules couleurs définies, par leur nom, sont des membres de la classe ColorConstants, et il y a huit membres de la classe: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta et vbCyan.

Dans VBA, vous pouvez utiliser la propriété ColorIndex pour définir la couleur que vous souhaitez utiliser à partir de la palette d’Excel. Le problème est que ColorIndex n’est pas une couleur; c’est un index dans la palette. Ainsi, un ColorIndex de 1 est la première couleur de la palette, 2 est la seconde, et ainsi de suite. Vous pouvez voir cela en action en regardant l’exemple de code à cette URL:

http://www.ozgrid.com/VBA/ReturnCellColor.htm

Ce code examine la propriété ColorIndex d’une cellule et renvoie un nom de couleur. Cependant, le nom renvoyé n’est pas une constante pour la couleur; ce n’est qu’une description de la couleur de la palette à cet index.

Si vous souhaitez définir la couleur d’une cellule, vous devez en fait utiliser la propriété Color. Cette propriété vous permet d’utiliser les huit constantes de couleur VBA mentionnées précédemment. Il se trouve que si vous utilisez ces propriétés Color pour définir la couleur intérieure d’une cellule, vous constaterez que les huit couleurs nommées correspondent aux valeurs ColorIndex de 1 à 8. La macro suivante illustre bien cela:

Sub CheckColors()

Dim arr8Colors As Variant     Dim i As Integer

arr8Colors = Array( _       vbBlack, vbWhite, vbRed, vbGreen, _       vbBlue, vbYellow, vbMagenta, vbCyan)

For i = 0 To 7         Selection.Offset(i, 0).Interior.Color = arr8Colors(i)

Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex     Next i End Sub

Cette correspondance pour les huit premières valeurs entre Color et ColorIndex ne doit être considérée que comme un artefact de l’histoire, remontant à l’époque où Excel ne vous permettait d’utiliser que huit couleurs, les huit couleurs définies avec les constantes VBA. Si vous souhaitez spécifier une autre couleur pour une cellule, vous devez utiliser la fonction RVB pour spécifier la propriété Color, comme indiqué ici:

Selection.Interior.Color = RGB(128, 64, 255)

La fonction RVB vous permet de spécifier les composants rouge, vert et bleu de n’importe quelle couleur. Chaque composant peut avoir une valeur comprise entre 0 et 255.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2778) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.