Médiaforma

VBA Excel – Modifier la mise en forme des cellules

Partagez cet article sur vos réseaux

Couleur du texte

Dans les exemples de cette section, le texte devient rouge. Bien entendu, vous pouvez utiliser une autre couleur via la fonction RGB() ou en utilisant une couleur prédéfinie via Font.ColorIndex. Pour en savoir plus sur les couleurs utilisables en VBA, lisez l’article « Travailler avec des couleurs ».

Modifier la couleur du texte de la cellule active :

ActiveCell.Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte de la sélection :

Selection.Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte d’une plage de cellules sans la sélectionner (ici, la plage A3:C5) :

Range("A2:C5").Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte de plusieurs lignes contigües (ici , les lignes 6 à 9) :

Rows("6:9").Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte de plusieurs lignes disjointes (ici , les lignes 2, 5 et 9) :

Range("2:2, 5:5, 9:9").Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte de plusieurs colonnes contigües (ici, les colonnes B à D) :

Columns("B:D").Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte de plusieurs colonnes disjointes (ici , les colonnes A et C) :

Range("A:A, C:C").Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte de toute la feuille courante :

Cells.Font.Color = RGB(255, 0, 0)

Modifier la couleur du texte d’une autre feuille de calcul (ici la feuille Feuil2) :

Feuil2.Cells.Font.Color = RGB(255, 0, 0)

Couleur d’arrière-plan

Tout ce qui a été dit dans la section précédente reste vrai ici, mais au lieu d’utiliser Font.Color, vous utiliserez Interior.Color ou Interior.ColorIndex.

Modifier la couleur de l’arrière-plan de la cellule active :

ActiveCell.Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan de la sélection :

Selection.Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan d’une plage de cellules sans la sélectionner (ici, la plage A3:C5) :

Range("A2:C5").Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan de plusieurs lignes contigües (ici , les lignes 6 à 9) :

Rows("6:9").Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan de plusieurs lignes disjointes (ici , les lignes 2, 5 et 9) :

Range("2:2, 5:5, 9:9").Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan de plusieurs colonnes contigües (ici, les colonnes B à D) :

Columns("B:D").Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan de plusieurs colonnes disjointes (ici , les colonnes A et C) :

Range("A:A, C:C").Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan de toute la feuille courante :

Cells.Interior.Color = RGB(255, 0, 0)

Modifier la couleur de l’arrière-plan d’une autre feuille de calcul (ici la feuille Feuil2) :

Feuil2.Cells.Interior.Color = RGB(255, 0, 0)

Police et attributs

Vous pouvez utiliser les propriétés Name, Size, Bold, Italic, Underline et FontStyle de l’objet Font pour modifier (respectivement) la police, la taille des caractères et les attributs gras, italique et souligné des cellules.

Par exemple, pour affecter la police Courier 16 points gras italique souligné à la plage A5:C3, vous pouvez écrire :

Range("A2:C5").Font.Name = "Courier"

Range("A2:C5").Font.Size = 16

Range("A2:C5").Font.Bold = True

Range("A2:C5").Font.Italic = True

Range("A2:C5").Font.Underline = True

Les attributs gras et italique peuvent être définis dans la propriété FontStyle. Cette propriété admet les valeurs suivantes :

  • Regular
  • Italic
  • Bold
  • Bold Italic

Le code devient :

Range("A2:C5").Font.Name = "Courier"

Range("A2:C5").Font.Size = 16

Range("A2:C5").Font.Underline = True

Range("A2:C5").Font.FontStyle = "Bold Italic"

Il est encore possible d’améliorer le code. En factorisant Range(« A2:C5 »).Font, le code devient :

Sub test()

  With Range("A2:C5").Font

  .Name = "Courier"

  .Size = 16

  .Underline = True

  .FontStyle = "Bold Italic"

End With

Format des cellules

Vous pouvez utiliser des instructions VBA pour définir le format des cellules : nombre, monétaire, date, etc. Pour cela, vous utiliserez la propriété NumberFormat d’un objet Range, Rows, Columns, Cells ou ActiveCell.

Format de date et d’heure

Pour définir un format date ou heure, vous utiliserez les codes de format suivants :

Codes de format Signification
yyyy Année sur 4 chiffres
yy Année sur 2 chiffres
mmmm Mois en texte
mmm Mois en texte abrégé
mm Mois entre 01 et 12
m Mois entre 1 et 12
dddd Jour en texte
ddd Jour en texte abrégé
dd Jour entre 01 et 31
d Jour entre 1 et 31
hh Heures avec zéro entre 00 et 23
h Heures sans zéro entre 0 et 23
nn Minutes avec zéro entre 00 et 59
n Minutes sans zéro entre 0 et 59
ss Secondes avec zéro entre 00 et 59
s Secondes sans zéro entre 0 et 59

Par exemple, pour que la cellule courante affiche une date au format samedi 12/08/2018, vous utiliserez cette instruction :

ActiveCell.NumberFormat = "dddd dd/mm/yyyy"

Voici un exemple de rendu :

Ou encore, pour que la cellule courante affiche une information horaire avec un séparateur « : » et comprenant les heures sur 2 chiffres, les minutes sur 2 chiffres et les secondes sur 2 chiffres, vous utiliserez cette instruction :

ActiveCell.NumberFormat = "hh:mm:ss"

Voici un exemple de rendu :

Format numérique

Pour faciliter la saisie du format des cellules numérique, je vous conseille d’afficher la boîte de dialogue Format de cellule et de sélectionner la catégorie Personnalisée sous l’onglet Nombre :

Pour afficher cette boîte de dialogue, cliquez sur l’icône Format de nombre, dans le groupe Nombre, sous l’onglet Accueil du ruban :

Les chaînes de formatage de la boîte de dialogue Format de cellule seront appliqués aux cellules avec la propriété NumberFormatLocal. Par exemple, pour appliquer à la cellule active un format monétaire avec un affichage en rouge pour les valeurs négatives, vous utiliserez cette instruction :

ActiveCell.NumberFormatLocal = "# ##0,00 €;[Rouge]-# ##0,00 €"

Voici un exemple de rendu :

Copier-coller en VBA

Une seule ligne de code suffit pour copier-coller des cellules, plages, lignes ou colonnes. Voici quelques exemples :

Copie de la cellule G5 en G30 :

Range("G5").Copy Range("G30")

Copie de la colonne A dans la colonne G :

Range("A:A").Copy Range("G:G")

Copie de la ligne 13 dans la ligne 25 :

Range("13:13").Copy Range("25:25")

Copie de la plage A2:C3 de la feuille courante à partir de la cellule A1 du classeur Feuil2 :

Range("A2:C3").Copy Worksheets("Feuil2").Range("A1")

Remarque

Ces instructions n’utilisent pas le presse-papiers multiple d’Office.

Dans tous ces exemples, le contenu des cellules et leur mise en forme sont copies-collés. Si vous voulez limiter le copier-coller aux valeurs ou à la mise en forme, vous devrez utiliser un collage spécial. Ici par exemple, les valeurs de la plage A2:B8 sont copiées en C12, sans tenir compte de la mise en forme :

Set range1 = Range("A2:B8")

range1.Copy

Range("C12").Select

ActiveCell.PasteSpecial Paste:=xlPasteValues

Vous voulez copier-coller la mise en forme mais pas la valeur des cellules ? Remplacez la constante xlPasteValues par la constante xlPasteFormats. Le code devient :

Set range1 = Range("A2:B8")

range1.Copy

Range("C12").Select

ActiveCell.PasteSpecial Paste:=xlPasteFormats