VBA : Comment appliquer une mise en forme conditionnelle aux cellules



Vous pouvez utiliser les méthodes suivantes dans VBA pour appliquer une mise en forme conditionnelle aux cellules :

Méthode 1 : appliquer une mise en forme conditionnelle basée sur une condition

Sub ConditionalFormatOne()
Dim rg As Range
Dim cond As FormatCondition

'specify range to apply conditional formatting
Set rg = Range("B2:B11")

'clear any existing conditional formatting
rg.FormatConditions.Delete

'apply conditional formatting to any cell in range B2:B11 with value greater than 30
Set cond = rg.FormatConditions.Add(xlCellValue, xlGreater, "=30")

'define conditional formatting to use
With cond
.Interior.Color = vbGreen
.Font.Color = vbBlack
.Font.Bold = True
End With

End Sub

Méthode 2 : appliquer une mise en forme conditionnelle basée sur plusieurs conditions

Sub ConditionalFormatMultiple()
Dim rg As Range
Dim cond1 As FormatCondition, cond2 As FormatCondition, cond3 As FormatCondition

'specify range to apply conditional formatting
Set rg = Range("A2:A11")

'clear any existing conditional formatting
rg.FormatConditions.Delete

'specify rules for conditional formatting
Set cond1 = rg.FormatConditions.Add(xlCellValue, xlEqual, "Mavericks")
Set cond2 = rg.FormatConditions.Add(xlCellValue, xlEqual, "Blazers")
Set cond3 = rg.FormatConditions.Add(xlCellValue, xlEqual, "Celtics")

'define conditional formatting to use
With cond1
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Italic = True
End With

With cond2
.Interior.Color = vbRed
.Font.Color = vbWhite
.Font.Bold = True
End With

With cond3
.Interior.Color = vbGreen
.Font.Color = vbBlack
End With

End Sub

Méthode 3 : supprimer toutes les règles de mise en forme conditionnelle des cellules

Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec l’ensemble de données suivant dans Excel :

Exemple 1 : appliquer une mise en forme conditionnelle basée sur une condition

Nous pouvons utiliser la macro suivante pour remplir les cellules de la plage B2:B11 qui ont une valeur supérieure à 30 avec un fond vert, une police noire et un style de texte en gras :

Sub ConditionalFormatOne()
Dim rg As Range
Dim cond As FormatCondition

'specify range to apply conditional formatting
Set rg = Range("B2:B11")

'clear any existing conditional formatting
rg.FormatConditions.Delete

'apply conditional formatting to any cell in range B2:B11 with value greater than 30
Set cond = rg.FormatConditions.Add(xlCellValue, xlGreater, "=30")

'define conditional formatting to use
With cond
.Interior.Color = vbGreen
.Font.Color = vbBlack
.Font.Bold = True
End With

End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Notez que chaque cellule de la plage B2:B11 qui a une valeur supérieure à 30 est soumise à une mise en forme conditionnelle.

Toute cellule ayant une valeur égale ou inférieure à 30 est simplement laissée seule.

Exemple 2 : appliquer une mise en forme conditionnelle basée sur plusieurs conditions

Nous pouvons utiliser la macro suivante pour appliquer une mise en forme conditionnelle aux cellules de la plage A2:A11 en fonction du nom de leur équipe :

Sub ConditionalFormatMultiple()
Dim rg As Range
Dim cond1 As FormatCondition, cond2 As FormatCondition, cond3 As FormatCondition

'specify range to apply conditional formatting
Set rg = Range("A2:A11")

'clear any existing conditional formatting
rg.FormatConditions.Delete

'specify rules for conditional formatting
Set cond1 = rg.FormatConditions.Add(xlCellValue, xlEqual, "Mavericks")
Set cond2 = rg.FormatConditions.Add(xlCellValue, xlEqual, "Blazers")
Set cond3 = rg.FormatConditions.Add(xlCellValue, xlEqual, "Celtics")

'define conditional formatting to use
With cond1
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Italic = True
End With

With cond2
.Interior.Color = vbRed
.Font.Color = vbWhite
.Font.Bold = True
End With

With cond3
.Interior.Color = vbGreen
.Font.Color = vbBlack
End With

End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Notez que les cellules portant les noms d’équipe « Mavericks », « Blazers » et « Celtics » sont toutes soumises à une mise en forme conditionnelle spécifique.

La seule équipe portant le nom « Lakers » est laissée seule puisque nous n’avons spécifié aucune règle de formatage conditionnel pour les cellules portant ce nom d’équipe.

Exemple 3 : Supprimer toutes les règles de mise en forme conditionnelle des cellules

Enfin, nous pouvons utiliser la macro suivante pour supprimer toutes les règles de mise en forme conditionnelle des cellules de la feuille actuelle :

Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Notez que toute mise en forme conditionnelle a été supprimée de chacune des cellules.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :

VBA : Comment compter les occurrences de caractères dans une chaîne
VBA : comment vérifier si une chaîne contient une autre chaîne
VBA : une formule pour « Si » la cellule contient »

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *