Formater les cellules en fonction de leur valeur, Excel VBA
Voici une explication détaillée et un code VBA pour formater les cellules en fonction de leur valeur dans Excel.
Présentation du problème
Dans Excel, il se peut que vous souhaitiez appliquer un formatage différent aux cellules en fonction de leur valeur, par exemple, changer la couleur de fond d’une cellule en fonction du nombre qu’elle contient. En utilisant VBA (Visual Basic for Applications) d’Excel, vous pouvez automatiser ce processus de mise en forme conditionnelle, ce qui permet d’améliorer la visualisation des données et la lisibilité du tableau.
Dans ce guide, nous allons créer un script VBA qui va :
1. Identifier la plage de cellules où le formatage doit être appliqué.
2. Vérifier la valeur dans chaque cellule.
3. Modifier le format de la cellule (comme la couleur de fond, la couleur de la police, etc.) en fonction de sa valeur.
Exemple : Formater des cellules en fonction de leur valeur
Étape 1 : Définir la plage de cellules
Nous commençons par définir la plage de cellules sur laquelle nous voulons appliquer le formatage. Vous pouvez utiliser une plage spécifique (par exemple, A1:A10) ou une plage dynamique en fonction des données de votre feuille.
Étape 2 : Définir les conditions de formatage
Pour chaque cellule de la plage définie, nous allons vérifier sa valeur et appliquer un formatage spécifique en fonction de la valeur.
- Condition Exemple 1 : Si la valeur de la cellule est supérieure à 50, changer la couleur de fond en vert.
- Condition Exemple 2 : Si la valeur de la cellule est inférieure à 50 mais supérieure à 20, changer la couleur de fond en jaune.
- Condition Exemple 3 : Si la valeur de la cellule est inférieure ou égale à 20, changer la couleur de fond en rouge.
Étape 3 : Écrire le code VBA
Voici le code VBA détaillé pour réaliser cela.
Sub FormatCellsBasedOnValue() Dim ws As Worksheet Dim rng As Range Dim cell As Range ' Définir la feuille de calcul où le formatage sera appliqué Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez "Sheet1" par le nom de votre feuille ' Définir la plage sur laquelle appliquer le formatage (par exemple, A1:A10) Set rng = ws.Range("A1:A10") ' Changez cette plage selon vos besoins ' Boucle à travers chaque cellule de la plage For Each cell In rng If IsNumeric(cell.Value) Then ' Vérifier si la cellule contient un nombre ' Si la valeur de la cellule est supérieure à 50 If cell.Value > 50 Then cell.Interior.Color = RGB(0, 255, 0) ' Couleur de fond verte cell.Font.Color = RGB(255, 255, 255) ' Police blanche ' Si la valeur de la cellule est entre 20 et 50 ElseIf cell.Value > 20 Then cell.Interior.Color = RGB(255, 255, 0) ' Couleur de fond jaune cell.Font.Color = RGB(0, 0, 0) ' Police noire ' Si la valeur de la cellule est inférieure ou égale à 20 Else cell.Interior.Color = RGB(255, 0, 0) ' Couleur de fond rouge cell.Font.Color = RGB(255, 255, 255) ' Police blanche End If Else ' Si la cellule ne contient pas un nombre, réinitialiser le formatage cell.Interior.ColorIndex = xlNone ' Pas de couleur de fond cell.Font.ColorIndex = xlNone ' Pas de changement de couleur de police End If Next cell End Sub
Explication détaillée du code
1. Définir la feuille de calcul et la plage
Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez "Sheet1" par le nom de votre feuille Set rng = ws.Range("A1:A10") ' Changez cette plage selon vos besoins
- ThisWorkbook.Sheets(« Sheet1 ») : Cette ligne spécifie la feuille de calcul où vous voulez appliquer le formatage. Dans cet exemple, il s’agit de la feuille « Sheet1 ». Vous pouvez remplacer « Sheet1 » par le nom de la feuille avec laquelle vous travaillez.
- ws.Range(« A1:A10 ») : Cela définit la plage de cellules sur laquelle le formatage sera appliqué. Ici, cela concerne la plage allant de A1 à A10, mais vous pouvez la modifier pour appliquer le formatage à toute plage de cellules.
2. Boucler à travers les cellules
For Each cell In rng
For Each cell In rng
: Cela démarre une boucle qui va passer en revue chaque cellule individuelle dans la plage rng (dans cet exemple, de A1 à A10).
3. Vérifier si la cellule contient un nombre
If IsNumeric(cell.Value) Then
- If IsNumeric(cell.Value) Then : Cette condition vérifie si la cellule contient une valeur numérique. Si c’est le cas, le code continue pour appliquer le formatage conditionnel. Si la cellule contient une valeur non numérique (comme du texte), le formatage sera réinitialisé.
4. Appliquer le formatage conditionnel en fonction de la valeur
Voici les conditions que nous vérifions et les formatages que nous appliquons :
-
- Si la valeur de la cellule est supérieure à 50 :
If cell.Value > 50 Then cell.Interior.Color = RGB(0, 255, 0) ' Couleur de fond verte cell.Font.Color = RGB(255, 255, 255) ' Police blanche
-
- Si la valeur de la cellule est comprise entre 20 et 50 :
Else If cell.Value > 20 Then cell.Interior.Color = RGB(255, 255, 0) ' Couleur de fond jaune cell.Font.Color = RGB(0, 0, 0) ' Police noire
-
- Si la valeur de la cellule est inférieure ou égale à 20 :
Else cell.Interior.Color = RGB(255, 0, 0) ' Couleur de fond rouge cell.Font.Color = RGB(255, 255, 255) ' Police blanche
- La propriété Interior.Color est utilisée pour changer la couleur de fond de la cellule. La fonction RGB prend trois paramètres représentant les valeurs de couleur Rouge, Vert et Bleu.
- La propriété Font.Color change la couleur du texte dans la cellule.
5. Réinitialiser le formatage pour les cellules non numériques
Else cell.Interior.ColorIndex = xlNone ' Pas de couleur de fond cell.Font.ColorIndex = xlNone ' Pas de changement de couleur de police End If
Si la cellule ne contient pas de valeur numérique (par exemple, du texte), le formatage est réinitialisé à son état par défaut, sans changement de couleur de fond ou de texte.
6. Fin de la boucle
Next cell
Cela marque la fin de la boucle For Each
. Après cette ligne, le code continue à vérifier la cellule suivante dans la plage définie.
Comment utiliser ce code
1. Ouvrir l’éditeur VBA : Appuyez sur Alt + F11 dans Excel pour ouvrir l’éditeur VBA.
2. Insérer un module : Dans l’éditeur VBA, cliquez sur Insertion > Module pour ajouter un nouveau module.
3. Copier et coller le code : Copiez le code ci-dessus et collez-le dans le module.
4. Exécuter la macro : Appuyez sur F5 ou allez dans Exécuter > Exécuter Sub/UserForm pour exécuter la macro.
Conclusion
Ce code vous permet d’appliquer un formatage personnalisé en fonction des valeurs d’une plage de cellules dans Excel. Vous pouvez ajuster les plages et les conditions selon vos besoins pour convenir à votre cas d’utilisation spécifique. En automatisant ce processus avec VBA, vous pouvez rapidement mettre en évidence des données importantes et améliorer l’apparence de vos feuilles de calcul.