Créer une plage dynamique avec mise en forme conditionnelle, Excel VBA
Voici une explication détaillée et un exemple de code VBA pour créer une plage dynamique avec mise en forme conditionnelle dans Excel.
Objectif :
L’objectif est de créer une plage dynamique (une plage qui peut changer de taille en fonction des données) et d’appliquer une mise en forme conditionnelle à cette plage à l’aide de VBA dans Excel.
Étapes :
- Définir la Plage Dynamique : Une plage dynamique fait référence à une plage qui s’ajuste automatiquement lorsque de nouvelles données sont ajoutées ou supprimées. En VBA, cela peut être fait en faisant référence à la plage de manière dynamique (en utilisant CurrentRegion, UsedRange, etc.) ou en utilisant des formules pour déterminer les limites de la plage.
- Appliquer la Mise en Forme Conditionnelle : La mise en forme conditionnelle permet d’appliquer des styles (couleurs, polices, bordures, etc.) aux cellules qui répondent à une condition spécifique. Nous pouvons utiliser VBA pour appliquer la mise en forme conditionnelle en fonction des valeurs dans la plage (par exemple, en mettant en surbrillance les cellules dont la valeur est supérieure à un certain seuil).
Exemple de Code :
Sub AppliquerMiseEnFormeConditionnelleDynamique() ' Déclaration des variables Dim ws As Worksheet Dim plageDynamique As Range Dim derniereLigne As Long Dim derniereColonne As Long ' Définir la feuille de calcul (changez le nom selon votre feuille) Set ws = ThisWorkbook.Sheets("Feuille1") ' Trouver la dernière ligne et colonne avec des données derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' Définir la plage dynamique (ici de A1 à la dernière ligne et colonne) Set plageDynamique = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)) ' Supprimer toute mise en forme conditionnelle précédente plageDynamique.FormatConditions.Delete ' Appliquer une mise en forme conditionnelle : mettre en surbrillance les cellules > 50 With plageDynamique.FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:="50") .Interior.Color = RGB(255, 0, 0) ' Fond rouge pour les cellules > 50 .Font.Color = RGB(255, 255, 255) ' Police blanche .Font.Bold = True End With ' Appliquer une autre condition : mettre en surbrillance les cellules < 10 avec un fond vert With plageDynamique.FormatConditions.Add(Type:=xlCellValue, Operator:=xlLess, Formula1:="10") .Interior.Color = RGB(0, 255, 0) ' Fond vert pour les cellules < 10 .Font.Color = RGB(0, 0, 0) ' Police noire .Font.Bold = True End With ' Optionnel : ajouter d'autres conditions si nécessaire ' Afficher un message pour informer l'utilisateur que la mise en forme a été appliquée MsgBox "Plage dynamique avec mise en forme conditionnelle appliquée avec succès!", vbInformation End Sub
Explication du Code :
1. Définition de la feuille de calcul (ws) :
- Nous définissons la feuille de calcul où les données se trouvent. Dans ce cas, elle est nommée « Feuille1 », mais vous pouvez la modifier en fonction de votre besoin.
2. Identification de la Dernière Ligne et Colonne :
- La variable derniereLigne est déterminée à l’aide de la méthode .End(xlUp), qui trouve la dernière ligne avec des données dans la colonne A.
- De même, derniereColonne est déterminée par .End(xlToLeft) dans la première ligne (ligne 1) pour trouver la dernière colonne contenant des données.
3. Définition de la Plage Dynamique :
- La plage est définie de manière dynamique en utilisant ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)), ce qui signifie qu’elle commence à la cellule A1 et s’étend jusqu’à la dernière ligne et colonne contenant des données.
4. Suppression de la Mise en Forme Conditionnelle Précédente :
- La méthode .FormatConditions.Delete permet de supprimer toute mise en forme conditionnelle existante avant d’appliquer de nouvelles règles.
5. Application de la Mise en Forme Conditionnelle :
- Première Condition (supérieure à 50) : Cette condition applique un fond rouge et une police blanche en gras aux cellules dont les valeurs sont supérieures à 50.
- Deuxième Condition (inférieure à 10) : Cette condition applique un fond vert et une police noire en gras aux cellules dont les valeurs sont inférieures à 10.
6. Affichage d’un Message :
- Un message est affiché pour informer l’utilisateur que la mise en forme conditionnelle a été appliquée avec succès.
Personnalisation du Code :
- Ajustement de la Plage Dynamique : La méthode utilisée pour déterminer la plage peut être ajustée selon vos besoins. Par exemple, si vous voulez que la plage couvre certaines colonnes ou lignes spécifiques, vous pouvez modifier manuellement les limites de la plage.
- Mise en Forme Conditionnelle : Vous pouvez ajouter d’autres règles de mise en forme conditionnelle en fonction de différents critères. La méthode .FormatConditions.Add permet de définir diverses conditions telles que xlBetween, xlEqual, xlLessEqual, etc., et d’appliquer des styles différents (couleurs, bordures, polices).
Conclusion :
Ce script VBA vous permet de créer une plage dynamique et d’appliquer une mise en forme conditionnelle en fonction des valeurs dans cette plage. Le code est flexible et vous pouvez le modifier en fonction de vos besoins spécifiques. La mise en forme conditionnelle rend les données plus visuelles et plus faciles à analyser, en particulier lorsqu’il s’agit de grands ensembles de données.