Changer la couleur de la cellule en fonction de la date, Excel VBA
Voici un code détaillé en VBA pour Excel, permettant de changer la couleur d’une cellule en fonction de la date. Ce code prend en compte la date actuelle et applique différentes couleurs selon que la date de la cellule soit passée, soit présente, soit future.
Étapes à suivre :
- Ouvrir l’éditeur VBA : Appuyez sur Alt + F11 pour ouvrir l’éditeur de VBA dans Excel.
- Créer un module : Dans l’éditeur VBA, allez dans Insertion > Module pour ajouter un module.
- Ajouter le code : Copiez et collez le code VBA suivant dans le module.
Code VBA
Sub ChangerCouleurCelluleParDate() ' Déclare les variables nécessaires Dim cell As Range Dim dateCell As Date Dim currentDate As Date ' Récupère la date actuelle currentDate = Date ' Parcourt chaque cellule de la sélection active For Each cell In Selection ' Vérifie si la cellule contient une date If IsDate(cell.Value) Then ' Récupère la date de la cellule dateCell = cell.Value ' Compare la date de la cellule avec la date actuelle If dateCell < currentDate Then ' Si la date est passée, la couleur devient rouge cell.Interior.Color = RGB(255, 0, 0) ElseIf dateCell = currentDate Then ' Si la date est aujourd'hui, la couleur devient jaune cell.Interior.Color = RGB(255, 255, 0) ElseIf dateCell > currentDate Then ' Si la date est future, la couleur devient verte cell.Interior.Color = RGB(0, 255, 0) End If Else ' Si la cellule ne contient pas de date, on ne modifie pas la couleur cell.Interior.ColorIndex = -4142 ' Pas de couleur (aucune modification) End If Next cell End Sub
Explication du code :
1. Déclaration des variables :
- cell : Représente chaque cellule dans la plage sélectionnée (la plage de cellules où la couleur sera changée).
- dateCell : Contient la date de la cellule.
- currentDate : Contient la date actuelle.
2. Récupération de la date actuelle :
- currentDate = Date récupère la date du jour.
3. Boucle sur chaque cellule :
- For Each cell In Selection parcourt chaque cellule dans la plage sélectionnée par l’utilisateur.
- If IsDate(cell.Value) vérifie si la cellule contient une date valide.
4. Changement de couleur selon la date :
- Si la date de la cellule est inférieure à la date actuelle, la cellule devient rouge (RGB(255, 0, 0)).
- Si la date de la cellule est égale à la date actuelle, la cellule devient jaune (RGB(255, 255, 0)).
- Si la date de la cellule est supérieure à la date actuelle, la cellule devient verte (RGB(0, 255, 0)).
5. Cellules sans date :
- Si la cellule ne contient pas de date, la couleur est réinitialisée à l’état d’origine avec cell.Interior.ColorIndex = -4142 (ce qui supprime toute couleur de fond).
Comment utiliser le code :
- Sélectionnez une plage de cellules contenant des dates dans votre feuille Excel.
- Allez dans l’éditeur VBA (Alt + F11), puis dans l’éditeur, exécutez la macro ChangerCouleurCelluleParDate.
- Les cellules seront automatiquement colorées en fonction de la comparaison avec la date actuelle.
Personnalisation :
- Changer les couleurs : Vous pouvez remplacer les valeurs RGB(255, 0, 0) pour la couleur rouge, RGB(255, 255, 0) pour le jaune, et RGB(0, 255, 0) pour le vert par d’autres couleurs en fonction de vos besoins.
- Plage de cellules : Vous pouvez appliquer cette macro à une plage spécifique en la modifiant comme suit dans le code :
For Each cell In Range("A1:A10") ' Remplacez A1:A10 par votre plage
Cela vous permettra de modifier dynamiquement les couleurs des cellules en fonction de la date dans Excel.