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
"
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 SubPourquoi 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