Propriétés des cellules en VBA : Value, Text, Formula, mises en forme, Color et ColorIndex
Une cellule est un objet Range dont les propriétés décrivent le contenu (Value, Text, Formula) et l’apparence (Font, Interior, Borders, NumberFormat). On les lit pour connaître l’état de la cellule, on les affecte pour la modifier. Cette page montre ce que renvoie chaque propriété de valeur, comment appliquer les mises en forme courantes et comment choisir une couleur avec Color ou ColorIndex. Voir aussi les variables et l’objet Range.
La valeur d’une cellule
Value est la propriété par défaut : Range("B2") seul équivaut à Range("B2").Value. Elle renvoie la valeur typée (une Date pour une date, un Currency pour une cellule au format monétaire). Value2 renvoie la valeur brute, sans ces conversions : une date devient son numéro de série. Text renvoie exactement ce qui est affiché, format compris, y compris #### si la colonne est trop étroite. Formula renvoie la formule en anglais, FormulaLocal en français, FormulaR1C1 en références relatives.
Value2 est un peu plus rapide que Value : pas de conversion en Date ni en Currency. Idéal pour charger une plage dans un tableau..Text : c’est du texte mis en forme (« 1 234,50 € »), qui change avec le format et la largeur de colonne.Écrire une valeur ou une formule
Pour écrire, on affecte la propriété : Range("F2").Value = 100. Une chaîne qui commence par = est interprétée comme une formule, en anglais et avec le point décimal : Range("F2").Formula = "=SUM(D2:D9)". Pour écrire la formule en français, utilisez FormulaLocal. ClearContents efface le contenu en gardant la mise en forme ; Clear efface tout.
Formula attend =B2*1.2 (point, fonctions anglaises, virgule entre arguments). FormulaLocal attend =B2*1,2 et =SOMME(B2;C2).Range("F2:F9").Formula = "=D2*1.2" écrit la formule sur 8 lignes en ajustant les références, comme une recopie.Mises en forme diverses
La police se règle par l’objet Font (.Bold, .Italic, .Underline, .Size, .Name, .Color), le fond par Interior, les bordures par Borders ou BorderAround, l’alignement par HorizontalAlignment, le format des nombres par NumberFormat (codes en anglais) ou NumberFormatLocal. With … End With regroupe les réglages ; l’enregistreur de macros reste le meilleur moyen de découvrir le nom d’une propriété.
Range("A1:D4").ClearFormats retire toutes les mises en forme sans toucher aux valeurs.Range("A1:D1").Style = "Titre 1" applique un style existant du classeur : une seule ligne, et une mise en forme cohérente partout.Color et ColorIndex
Color accepte n’importe laquelle des 16 millions de couleurs, sous forme d’un nombre Long calculé par RGB(rouge, vert, bleu) : rouge + vert × 256 + bleu × 65 536. Les constantes vbRed, vbBlue, vbYellow en sont des raccourcis. ColorIndex choisit l’une des 56 couleurs de la palette du classeur (1 = noir, 2 = blanc, 3 = rouge…) : pratique et court, mais limité. Interior.ColorIndex = xlNone supprime le fond. En lecture, ColorIndex renvoie la couleur de la palette la plus proche.
&H784E1F. Passez toujours par RGB().r = c Mod 256, g = (c \ 256) Mod 256, b = c \ 65536 décomposent la couleur lue dans .Interior.Color.Exercice : mettre en forme un tableau de ventes par macro
Classeur d’exercice (Énoncé et Corrigé)
- Enregistrez le classeur en .xlsm et collez le code de la feuille « Code VBA » dans un module standard.
- Exécutez
LireValeurs: la fenêtre d’exécution affiche Value, Value2, Text et Formula des cellules B2 et F2. Comparez. - Exécutez
MettreEnForme: en-tête blanc sur bleu, bordures, formats de date et de montant, lignes de plus de 1 000 € en vert, avoir en rouge. - Exécutez
LireCouleur: les composantes de la couleur de A1 s’affichent (31, 78, 120). - Contrôle : 4 lignes vertes, total 8 645,00 €, avoir en rouge (ColorIndex 3).
- Répondez aux questions de la feuille Contrôle.