Mise en Forme avec VBA
Glissez pour afficher le menu
Tout ce que vous pouvez formater manuellement dans Excel peut être formaté par le code.
Polices
With est une abréviation permettant de faire référence au même objet plusieurs fois de suite sans retaper son nom complet à chaque ligne. With obj ... End With signifie simplement que chaque ligne à l'intérieur de ce bloc qui commence par un point (comme .Property = X) est une abréviation pour obj.Property = X — VBA complète automatiquement obj pour chacune d'elles. Il s'agit uniquement d'une facilité de lecture ; cela ne modifie pas le fonctionnement du code.
' Without With — obj repeated on every line
ws.Range("A1:I1").Font.Bold = True
ws.Range("A1:I1").Font.Size = 11
ws.Range("A1:I1").Font.Color = RGB(255, 255, 255)
' With With — the object is stated once, everything else is shorthand
With ws.Range("A1:I1").Font
.Bold = True
.Size = 11
.Color = RGB(255, 255, 255)
.Name = "Calibri"
End With
Les deux versions font exactement la même chose — With évite simplement de répéter ws.Range("A1:I1").Font trois fois.
Couleurs
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Bordures
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Alignement
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Principes de base du formatage conditionnel
VBA peut appliquer les mêmes règles que celles créées via le ruban :
Dim rng As Range
Set rng = ws.Range("I2:I6") ' Status column
rng.FormatConditions.Delete ' clear any existing rules first
rng.FormatConditions.Add Type:=xlTextString, String:="Cancelled", _
TextOperator:=xlContains
rng.FormatConditions(1).Interior.Color = RGB(255, 199, 206)
rng.FormatConditions(1).Font.Color = RGB(156, 0, 6)
Exécutez ceci et chaque commande "Cancelled" reçoit automatiquement une surbrillance rouge — et contrairement à un formatage manuel, la règle reste active si la valeur de Status change par la suite.
Tâche
- Mettre en gras la ligne d’en-tête (
A1:I1), lui appliquer un fond vert foncé (RGB(24, 106, 60)) et rendre la police blanche (RGB(255, 255, 255)) — tout cela par code, pas manuellement. - Ajouter des bordures grises fines (
RGB(200, 200, 200)) autour de tout le tableau en utilisantCurrentRegion. - Ajouter un format conditionnel qui met en surbrillance toute commande avec
Discount % >= 10en jaune (RGB(255, 235, 156)).
1. Mise en forme de la ligne d’en-tête
Font.Bold,Interior.ColoretFont.Colorpeuvent tous être définis sur la même plage.- Le fond vert foncé nécessite un triplet RGB ; la police blanche est la valeur RGB la plus simple.
- Un bloc
With...End Withévite de répéterws.Range("A1:I1")trois fois.
2. Ajout de bordures avec CurrentRegion
CurrentRegionsur A1 sélectionne tout le tableau sans avoir à connaître ou coder en dur le nombre de lignes.- Les bordures ont trois propriétés à définir ensemble :
LineStyle,WeightetColor— gris fin signifiexlThinet une valeur RGB gris clair.
3. Formatage conditionnel pour Discount % >= 10
- Il s’agit d’une comparaison numérique, pas textuelle, donc le type de condition est xlCellValue avec xlGreaterEqual — différent de l’exemple sur le texte “Cancelled” vu plus haut dans le chapitre.
- Point délicat : Discount % est stocké comme un décimal (10% = 0,1), donc la valeur de comparaison dans Formula1 doit être écrite "0.1", et non "10".
- Toujours effacer les formats conditionnels existants sur cette plage en premier, sinon chaque exécution de votre macro empilera des règles en double.
Sub FormatOrdersTable()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
' --- 1. Header row formatting ---
With ws.Range("A1:I1")
.Font.Bold = True
.Interior.Color = RGB(24, 106, 60)
.Font.Color = RGB(255, 255, 255)
End With
' --- 2. Borders around the full table ---
With ws.Range("A1").CurrentRegion.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
' --- 3. Conditional format for Discount % >= 10 ---
Dim discountRange As Range
Set discountRange = ws.Range("G2:G6")
discountRange.FormatConditions.Delete
discountRange.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreaterEqual, Formula1:="0.1"
discountRange.FormatConditions(1).Interior.Color = RGB(255, 235, 156)
End Sub
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Mise en Forme avec VBA
Tout ce que vous pouvez formater manuellement dans Excel peut être formaté par le code.
Polices
With est une abréviation permettant de faire référence au même objet plusieurs fois de suite sans retaper son nom complet à chaque ligne. With obj ... End With signifie simplement que chaque ligne à l'intérieur de ce bloc qui commence par un point (comme .Property = X) est une abréviation pour obj.Property = X — VBA complète automatiquement obj pour chacune d'elles. Il s'agit uniquement d'une facilité de lecture ; cela ne modifie pas le fonctionnement du code.
' Without With — obj repeated on every line
ws.Range("A1:I1").Font.Bold = True
ws.Range("A1:I1").Font.Size = 11
ws.Range("A1:I1").Font.Color = RGB(255, 255, 255)
' With With — the object is stated once, everything else is shorthand
With ws.Range("A1:I1").Font
.Bold = True
.Size = 11
.Color = RGB(255, 255, 255)
.Name = "Calibri"
End With
Les deux versions font exactement la même chose — With évite simplement de répéter ws.Range("A1:I1").Font trois fois.
Couleurs
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Bordures
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Alignement
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Principes de base du formatage conditionnel
VBA peut appliquer les mêmes règles que celles créées via le ruban :
Dim rng As Range
Set rng = ws.Range("I2:I6") ' Status column
rng.FormatConditions.Delete ' clear any existing rules first
rng.FormatConditions.Add Type:=xlTextString, String:="Cancelled", _
TextOperator:=xlContains
rng.FormatConditions(1).Interior.Color = RGB(255, 199, 206)
rng.FormatConditions(1).Font.Color = RGB(156, 0, 6)
Exécutez ceci et chaque commande "Cancelled" reçoit automatiquement une surbrillance rouge — et contrairement à un formatage manuel, la règle reste active si la valeur de Status change par la suite.
Tâche
- Mettre en gras la ligne d’en-tête (
A1:I1), lui appliquer un fond vert foncé (RGB(24, 106, 60)) et rendre la police blanche (RGB(255, 255, 255)) — tout cela par code, pas manuellement. - Ajouter des bordures grises fines (
RGB(200, 200, 200)) autour de tout le tableau en utilisantCurrentRegion. - Ajouter un format conditionnel qui met en surbrillance toute commande avec
Discount % >= 10en jaune (RGB(255, 235, 156)).
1. Mise en forme de la ligne d’en-tête
Font.Bold,Interior.ColoretFont.Colorpeuvent tous être définis sur la même plage.- Le fond vert foncé nécessite un triplet RGB ; la police blanche est la valeur RGB la plus simple.
- Un bloc
With...End Withévite de répéterws.Range("A1:I1")trois fois.
2. Ajout de bordures avec CurrentRegion
CurrentRegionsur A1 sélectionne tout le tableau sans avoir à connaître ou coder en dur le nombre de lignes.- Les bordures ont trois propriétés à définir ensemble :
LineStyle,WeightetColor— gris fin signifiexlThinet une valeur RGB gris clair.
3. Formatage conditionnel pour Discount % >= 10
- Il s’agit d’une comparaison numérique, pas textuelle, donc le type de condition est xlCellValue avec xlGreaterEqual — différent de l’exemple sur le texte “Cancelled” vu plus haut dans le chapitre.
- Point délicat : Discount % est stocké comme un décimal (10% = 0,1), donc la valeur de comparaison dans Formula1 doit être écrite "0.1", et non "10".
- Toujours effacer les formats conditionnels existants sur cette plage en premier, sinon chaque exécution de votre macro empilera des règles en double.
Sub FormatOrdersTable()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
' --- 1. Header row formatting ---
With ws.Range("A1:I1")
.Font.Bold = True
.Interior.Color = RGB(24, 106, 60)
.Font.Color = RGB(255, 255, 255)
End With
' --- 2. Borders around the full table ---
With ws.Range("A1").CurrentRegion.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
' --- 3. Conditional format for Discount % >= 10 ---
Dim discountRange As Range
Set discountRange = ws.Range("G2:G6")
discountRange.FormatConditions.Delete
discountRange.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreaterEqual, Formula1:="0.1"
discountRange.FormatConditions(1).Interior.Color = RGB(255, 235, 156)
End Sub
Merci pour vos commentaires !