Créer une mise en forme conditionnelle dynamique, Excel VBA
Voici un guide détaillé sur la manière de créer une mise en forme conditionnelle dynamique en utilisant VBA dans Excel.
Objectif :
Nous voulons appliquer une mise en forme conditionnelle dynamique à l’aide de VBA, de sorte que le format change automatiquement en fonction des valeurs des cellules. Cela peut être utile, par exemple, si vous souhaitez colorier des cellules en fonction de critères spécifiques tels que « supérieur à », « inférieur à », « entre », etc.
Guide étape par étape :
1. Comprendre la mise en forme conditionnelle dans VBA
La mise en forme conditionnelle permet de formater automatiquement les cellules en fonction de conditions spécifiques (par exemple, changer la couleur d’une cellule si la valeur dépasse un certain nombre). L’approche VBA permet d’appliquer ces formats de manière dynamique en fonction des données qui changent.
2. Préparer la feuille de calcul
Imaginons que vous avez une plage de données (par exemple, A1:A10) et que vous voulez appliquer une mise en forme conditionnelle pour mettre en surbrillance les cellules qui répondent à des critères spécifiques.
3. Écrire le code VBA
Voici un code VBA détaillé pour créer une mise en forme conditionnelle dynamique pour la plage A1:A10. Le code applique des formats en fonction des conditions suivantes :
- Les cellules dont la valeur est supérieure à 50 seront mises en surbrillance en vert.
- Les cellules dont la valeur est inférieure à 20 seront mises en surbrillance en rouge.
- Les cellules dont la valeur est comprise entre 20 et 50 seront mises en surbrillance en jaune.
Code VBA :
Sub CreateDynamicConditionalFormatting()
Dim ws As Worksheet
Dim rng As Range
Dim cf As FormatCondition
' Définir la feuille de calcul cible et la plage
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("A1:A10")
' Supprimer toute mise en forme conditionnelle existante
rng.FormatConditions.Delete
' 1. Appliquer un format pour les cellules supérieures à 50
Set cf = rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:="50")
cf.Interior.Color = RGB(0, 255, 0) ' Couleur verte
' 2. Appliquer un format pour les cellules inférieures à 20
Set cf = rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlLess, Formula1:="20")
cf.Interior.Color = RGB(255, 0, 0) ' Couleur rouge
' 3. Appliquer un format pour les cellules entre 20 et 50
Set cf = rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlBetween, Formula1:="20", Formula2:="50")
cf.Interior.Color = RGB(255, 255, 0) ' Couleur jaune
MsgBox "Mise en forme conditionnelle dynamique appliquée avec succès !"
End Sub
Explication du code
- Set ws et rng : Nous spécifions la feuille de calcul (ws) et la plage (rng) sur laquelle appliquer la mise en forme conditionnelle. Dans cet exemple, nous travaillons avec « Sheet1 » et la plage A1:A10.
- Effacer la mise en forme existante : La ligne rng.FormatConditions.Delete garantit que toute mise en forme conditionnelle existante sur la plage soit supprimée avant d’appliquer les nouvelles règles.
- Ajout des conditions de format : Pour chaque condition (supérieure à, inférieure à, et entre), nous utilisons FormatConditions.Add. Voici un détail de la méthode :
- Type:=xlCellValue : Nous appliquons la condition aux valeurs des cellules.
- Operator:=xlGreater, xlLess, xlBetween : Spécifie le type de condition (supérieur à, inférieur à, entre).
- Formula1 et Formula2 : Ce sont les valeurs avec lesquelles nous comparons. Par exemple, dans le cas de xlGreater, Formula1 est défini sur « 50 », ce qui signifie que les cellules supérieures à 50 seront formatées.
- Format des cellules : La ligne cf.Interior.Color = RGB(r, g, b) définit la couleur de fond des cellules qui remplissent la condition. Dans cet exemple :
- Vert (0, 255, 0) pour les valeurs supérieures à 50.
- Rouge (255, 0, 0) pour les valeurs inférieures à 20.
- Jaune (255, 255, 0) pour les valeurs entre 20 et 50.
5. Exécution du code
Pour exécuter le code :
- Ouvrez le classeur où vous souhaitez appliquer la mise en forme conditionnelle.
- Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Insérez un nouveau module : Insertion > Module.
- Collez le code dans le module.
- Appuyez sur F5 ou exécutez la macro CreateDynamicConditionalFormatting depuis le menu « Exécution ».
6. Modification pour des changements dynamiques
Vous pouvez ajuster les conditions de manière dynamique en les liant à des valeurs de cellules. Par exemple, si vous voulez que la condition dépende d’une valeur dans une cellule spécifique (par exemple, B1), vous pouvez modifier la formule comme suit :
Set cf = rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:="=B1")
De cette façon, la mise en forme changera en fonction de la valeur de la cellule B1.
Conclusion
Ce code montre comment appliquer une mise en forme conditionnelle dynamique à une plage de cellules en utilisant VBA dans Excel. Vous pouvez modifier les conditions et appliquer des formats plus complexes selon vos besoins. La puissance de VBA permet même de créer des logiques plus avancées, comme l’utilisation de formules ou l’application de différents types de formats (polices, bordures, etc.) en fonction de critères dynamiques.