Créer une mise en surbrillance dynamique de la plage de données, Excel VBA
Voici un code VBA détaillé pour créer une mise en surbrillance dynamique de la plage de données dans Excel. Ce script va mettre en évidence une plage dynamique en fonction de certaines conditions et se mettra à jour automatiquement lorsque de nouvelles données seront ajoutées ou supprimées.
Objectif
Le code VBA va :
- Identifier une plage dynamique (par exemple, une colonne avec des données dont la longueur varie).
- Mettre en surbrillance cette plage en fonction de conditions spécifiques (par exemple, des valeurs supérieures à un seuil).
- Mettre à jour la mise en surbrillance dynamiquement lorsque des données sont ajoutées ou supprimées.
Code VBA
Voici le script VBA bien commenté pour implémenter la mise en surbrillance dynamique de la plage :
Option Explicit
Sub HighlightDynamicRange()
Dim ws As Worksheet
Dim lastRow As Long
Dim rng As Range
Dim cell As Range
Dim highlightColor As Long
Dim threshold As Double
' Définir la feuille de calcul (modifiez selon vos besoins)
Set ws = ThisWorkbook.Sheets("Sheet1")
' Définir la colonne à scanner (par exemple, la colonne A)
Dim col As String
col = "A"
' Trouver la dernière ligne utilisée dans la colonne spécifiée
lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
' Définir la plage dynamique
Set rng = ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col)) ' Commence à la ligne 2 pour ignorer les en-têtes
' Définir la couleur de surbrillance (jaune)
highlightColor = RGB(255, 255, 0)
' Définir le seuil de la condition (par exemple, mettre en surbrillance les valeurs supérieures à 50)
threshold = 50
' Effacer la mise en forme précédente
rng.Interior.ColorIndex = xlNone
' Boucler à travers chaque cellule et appliquer la mise en forme conditionnelle
For Each cell In rng
If IsNumeric(cell.Value) Then
If cell.Value > threshold Then
cell.Interior.Color = highlightColor
End If
End If
Next cell
' Nettoyage
Set rng = Nothing
Set ws = Nothing
MsgBox "Mise en surbrillance appliquée avec succès !", vbInformation, "Plage Dynamique Mise en Surbrillance"
End Sub
Explication détaillée
- Définition de la feuille de calcul et des variables
- Le script commence par définir la feuille de calcul (ws) et la colonne (col) à vérifier.
- lastRow permet de trouver la dernière ligne utilisée dans la colonne dynamiquement.
- Identification de la plage dynamique
- Le script utilise :
lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
Cette ligne trouve la dernière cellule non vide dans la colonne « A » (modifiable).
- La plage dynamique est ensuite définie avec :
Set rng = ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col))
Cela garantit que la plage commence à partir de la ligne 2 (excluant les en-têtes).
- Application de la mise en surbrillance conditionnelle
- Une boucle parcourt chaque cellule de la plage dynamique.
- Si une cellule contient une valeur numérique supérieure à 50, la cellule est mise en surbrillance en jaune (RGB(255, 255, 0)).
- Avant d’appliquer la nouvelle mise en surbrillance, le script efface toute mise en forme précédente.
- Nettoyage
- Le script libère de la mémoire en définissant les objets à Nothing.
- Une boîte de message informe l’utilisateur lorsque l’exécution est réussie.
Comment l’utiliser
- Ouvrez Excel et appuyez sur ALT + F11 pour ouvrir l’éditeur VBA.
- Insérez un nouveau module (Insertion → Module).
- Copiez et collez le code dans le module.
- Exécutez la macro (F5).
- Modifiez col, threshold et highlightColor selon vos besoins.