Créer une plage dynamique avec mise en forme conditionnelle, Excel VBA

 

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 : 

  1. 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. 
  2. 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. 

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x