Changer la couleur de police fonction de la date en utilisant VBA dans Microsoft Excel
Dans cet article, nous utiliserons l’événement du classeur pour mettre en évidence des dates supérieures à la date actuelle.
Les données brutes pour cet exemple se composent de l’objectif de vente quotidien et de l’objectif atteint.
Nous souhaitons mettre en évidence les jours supérieurs à la date actuelle.
Explication logique
Dans cet article, nous avons créé deux macros, «SetColor» et «ResetColor».
La macro «SetColor» est utilisée pour mettre en évidence les dates supérieures à la date actuelle.
La macro «ResetColor» est utilisée pour réinitialiser le formatage de la source spécifiée.
Nous avons utilisé deux événements de classeur, un événement d’ouverture de classeur et un classeur avant l’événement de fermeture.
L’événement d’ouverture de classeur est déclenché lorsque le classeur est ouvert. À l’ouverture du classeur, il exécutera automatiquement la macro «SetColor».
Le classeur avant l’événement de fermeture est utilisé pour réinitialiser l’événement associé à l’événement d’ouverture du classeur.
Explication du code
Si IsDate (ActiveCell.Value) et ActiveCell.Value> Date Then Le code ci-dessus est utilisé pour vérifier si la valeur de la cellule est de type de données de date et est supérieure à la date actuelle.
ActiveCell.Interior.Color = RVB (0, 255, 0)
Le code ci-dessus est utilisé pour attribuer une couleur verte à la cellule active.
Définir Source = Range (« A1 », Range (« A1 »). SpecialCells (xlCellTypeLastCell))
Le code ci-dessus est utilisé pour sélectionner toutes les données dans la feuille Excel.
Veuillez suivre ci-dessous pour le code
Option Explicit Sub SetColor() If IsDate(ActiveCell.Value) And ActiveCell.Value > Date Then ActiveCell.Interior.Color = RGB(0, 255, 0) Else ActiveCell.Interior.Color = RGB(221, 235, 247) End If End Sub Sub ResetColor() 'Declaring variables Dim Rng, Source As Range Dim IntRow As Integer, IntCol As Integer 'Specifying all the cells as source range Set Source = Range("A1", Range("A1").SpecialCells(xlCellTypeLastCell)) 'Looping through all the cells For Each Rng In Source 'Checking whether cell contains a value If Not IsEmpty(Rng) Then 'Checking whether cell contain value of date data type If IsDate(Rng.Value) Then Rng.Select 'Assigning Green color if value is greater than today date If DateValue(Rng.Value) > Date Then ActiveCell.Interior.Color = RGB(0, 255, 0) Else ActiveCell.Interior.Color = RGB(221, 235, 247) End If End If End If Next Rng End Sub 'Insert below code in ThisWorkbook module Option Explicit Private Sub Workbook_Open() With Worksheets("Main") 'Event fired on entry to worksheet .OnEntry = "SetColor" 'Event fired on sheet activation .OnSheetActivate = "ResetColor" End With End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) With Worksheets("Main") .OnEntry = "" .OnSheetActivate = "" End With End Sub
Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et l’améliorer pour vous. Écrivez-nous à [email protected]