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 »