Bonjour à toutes et tous.
Savez-vous s’il est possible de modifier automatiquement la couleur de fond d’une cellule en fonction de la date.
Exemple, j’ai une ligne de A1 a D1. En A1 une date.
Si la date en A1 est inférieure à la date du jour, mettre la ligne A1 D1 avec couleur de fond.
En sachant que j’ai une énorme quantité de ligne comme A1 D1
Hello
oui c’est possible, et sans VBA, met dans la MFC
=$A1<aujourdhui()
Colonne A figée avec $ et cellule non figée qui suivra chaque ligne de A1 à A300 Si tu as une date dans cette plage, l’augmenter dans le champ d’application si tu en as plus…
puis dans format si tes lignes vont jusqu’a A300
=$A$1:$D$300
ou alors tu mets un fichier exemple, ce qui sera plus simple pour te répondre.
MFC date inferieur a aujourdhui.xlsx (9,4 Ko)
Voilà mon fichier.
Dedans j ai une macro appelée test qui me sert pour le fonctionnement.
Du coup est il possible de mettre un codage en macro qui du coup va remplir de couleur la ligne ou la date de la cellule colonne C est passée
SF_INBOX_33549_0b1640_TEST.xlsm (21,6 Ko)
Hello
a l’ouverture du fichier les dates anterieur a celle d’aujourdhui sont verifié et la ligne en question mise en couleur
macro en module 3
Sub VerifierDates()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Set ws = ThisWorkbook.Sheets(1) ' à adapter si besoin
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
For i = 1 To lastRow
If IsDate(ws.Cells(i, 3).Value) Then
If ws.Cells(i, 3).Value < Date Then
ws.Range(ws.Cells(i, 3), ws.Cells(i, 6)).Interior.Color = RGB(255, 200, 200)
Else
ws.Range(ws.Cells(i, 3), ws.Cells(i, 6)).Interior.ColorIndex = xlNone
End If
End If
Next i
End Sub
et la macro lançant la verification dans ThisWorbook
Private Sub Workbook_Open()
VerifierDates
End Sub
SF_INBOX_33549_0b1640_TEST.xlsm (23,8 Ko)
Ca fonctionnement plutôt bien.
Mais est-ce que cela serait possible que le tri soit fait à chaque fois que je clique sur valider plutôt que de devoir fermer et ouvrir le fichier ?
donc ça suppose que tu compte mettre des dates déjà dépassées le jour même ?
Non mais le pc et le fichier sont en fonctionnement permanent.
Du coup la seule façon d’actualiser c’est lorsque je rentre une nouvelle date.
Ou une actualisation automatique des que je l’utilise et sans forcément entrer de date
à mettre dans le code de la feuille où les dates sont saisies, si la date en C est antérieure à aujourd’hui, la ligne se colorie automatiquement même sans cliquer sur « Valider »
Private Sub Worksheet_Change(ByVal Target As Range)
' Vérifie si la modification concerne la colonne C
If Not Intersect(Target, Me.Columns("C")) Is Nothing Then
Application.EnableEvents = False
Dim cell As Range
For Each cell In Target
If IsDate(cell.Value) Then
If cell.Value < Date Then
Me.Range(Me.Cells(cell.Row, 3), Me.Cells(cell.Row, 6)).Interior.Color = RGB(255, 200, 200)
Else
Me.Range(Me.Cells(cell.Row, 3), Me.Cells(cell.Row, 6)).Interior.ColorIndex = xlNone
End If
End If
Next cell
Application.EnableEvents = True
End If
End Sub
SF_INBOX_33549_0b1640_TEST.xlsm (27,5 Ko)
Comment tu veux automatiser un truc basé sur une date sans mettre de date ?

Est-ce qu’une actualisation toutes les minutes, par exemple, conviendrait ?
Daniel
Oui effectivement je pourrais essayer
Dans le module ThisWorkbook :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime Intervalle, "Actu", , False
End Sub
Private Sub Workbook_Open()
Intervalle = Now + TimeValue("00:01:00")
Application.OnTime Intervalle, "Actu"
End Sub
Dans Module3 :
Public Intervalle As Date
Sub Actu()
Dim C As Range
Intervalle = Now + TimeValue("00:01:00")
Application.OnTime Intervalle, "Actu"
With Sheets("Consignes temporaires")
For Each C In .Range("C5", .Cells(.Rows.Count, 3).End(xlUp))
If C.Value < Date Then
C.Resize(, 4).Interior.Color = RGB(0, 176, 240)
Else
C.Resize(, 4).Interior.ColorIndex = xlNone
End If
Next C
End With
Debug.Print Now
End Sub
SF_INBOX_33549_0b1640_TEST.xlsm (26,0 Ko)
Daniel
Alors j’ai mis en application la réponse à Daniel, merci.
Donc je vais voir à l’usage si ça va.
Merci de votre aide
J’aurai une petite question.
Dans ton fichier, aurais-tu une macro pour désactiver le clic droit ?
Depuis que j’ai récupéré ton fichier, le clic droit ne fonctionne plus, j’ai du passer par le registre et regedit pour régler mon souci, et je ne veux pas le re-telecharger pour tester…
@taz :
C’est cette ligne :
For Each cb In Application.CommandBars
cb.Enabled = False
Next
Mets à True pour les réactiver
Daniel
Merci, ma question était juste pour confirmer ma supposition. Je suis passé par regedit en renommant le dossier Excel dans le registre en excel_old. Ainsi à l’ouverture, ça réouvre Excel comme lors d’un premier démarrage,avec tous les add-ins et macros désactivés. Ça refonctionnait après ma manip.
J’en ai profité pour me faire un petit fichier Excelreset.reg
Oui, tu as une macro ,
J’ai eu la confirmation par Daniel. Comme je ne garde pas les fichiers, même après les avoir mis à la corbeille, j’avais le souci, donc ce serait bien à l’avenir de prévenir si ce genre de macro est dans un fichier.
J’avais même tenté via une manip en VBA
Application.CommandBars("Ply").Enabled = True
Application.CommandBars("Workbook Tabs").Enabled = True
Application.CommandBars("Cell").Enabled = True