Couleur de fond de cellule qui change selon une date

Bonjour à tous,

Je suis (très) novice sous Excel, et plus précisément sous VBA, et je bloque sur l'écriture d'une macro qui consiste à appliquer une couleur particulière à une cellule contenant une date et pour laquelle cette dernière est comprise dans un intervalle de temps bien précis. Une couleur si la date est inférieur à la date du jour, une couleur si la date est supérieur à la date du jour plus deux ans et une autre couleur pour les autres dates. Par ailleurs, il est possible qu'il y est des cellules vides dans la plage de cellule étudiée.

Voici le petit bout de programme que j'ai commencé à faire mais il ne veut pas l'exécuter car la variable attendu n'est pas correcte. (Pas sympa ) . De plus, dans mon fichier original, les dates inscrites dans les cellules sont calculés au préalable par une formule qui ajoute un nombre d'année à une date initiale.

"

Sub COULEUR2()

Dim DateCell As Date

Sheets("Source").Range("A2:T97").Select

For Each DateCell In Range("A2:T97")

If DateCell < AUJOURDHUI Then

Cell.Interior.ColorIndex = RGB(255, 0, 0)

Else

If DateCell > (AUJOURDHUI + (365 * 2)) Then

Cell.Interior.ColorIndex = RGB(96, 224, 0)

Else

Cell.Interior.ColorIndex = RGB(224, 160, 0)

End If

End If

Next

End Sub

"

Je vous joins également le fichier pour que vous puissiez vous faire une idée plus précise du tableau sur lequel je travaille.

Je vous remercie par avance de votre aide sur l'écriture de ce petit bout de macro. Mon idée est d'établir celui-ci et de le relier à un bouton qui permettra de mettre à jour les couleurs des cellules une fois les modifications apportées par les utilisateurs.

Bonne soirée à tous !

Utilise la balise Code et l'indentation :

Sub COULEUR2()
Dim DateCell As Date
Sheets("Source").Range("A2:T97").Select
    For Each DateCell In Range("A2:T97")
        If DateCell < AUJOURDHUI Then
            Cell.Interior.ColorIndex = RGB(255, 0, 0)
        Else
            If DateCell > (AUJOURDHUI + (365 * 2)) Then
                Cell.Interior.ColorIndex = RGB(96, 224, 0)
            Else
                Cell.Interior.ColorIndex = RGB(224, 160, 0)
            End If
        End If
    Next
End Sub  

DateCellest Range ! et non Date ...

Où est défini AUJOURDHUI? ... sinon c'est Now

Où est défini Cell? ... sinon c'est DateCell

ColorIndex = RGB : INCOMPATIBLE

etc. etc. etc.

Sub COULEUR2()
Dim Cell As Range
Sheets("Source").Select
    For Each Cell In Range("A2:T97")
        If Cell.Value < Now Then
            Cell.Interior.Color = RGB(255, 0, 0)
        Else
            If Cell.Value > (Now + (365 * 2)) Then
                Cell.Interior.Color = RGB(96, 224, 0)
            Else
                Cell.Interior.Color = RGB(224, 160, 0)
            End If
        End If
    Next
End Sub

Pourquoi ne pas utiliser la mise en forme conditionnelle ?

Bonjour,

Une proposition, qui en comporte plusieurs.

1 - Feuille Source : procédure évènementielle (Worksheet_Change)

2 - Feuille Source (2) : mise en forme conditionnelle

Cdlt.

nota : il y a aussi une procédure dans un module standard pour initialiser les couleurs...

Bonjour à vous deux,

Je vous remercie pour vos corrections et précisions sur la méthode à utiliser. En plus de la solution donnée, j'ai appris plusieurs choses qui me permettront à l'avenir d'être plus juste dans l'élaboration de mes futurs macros

Cela marche très bien. Encore un grand merci à tous les deux et très bonne journée

Rechercher des sujets similaires à "couleur fond qui change date"