Comparaison date et colorisation

2demande-aide.xlsm (17.60 Ko)

Bonjour le forum,

Je doit parcourir toutes les lignes de plusieurs colonnes dont certaines lignes contiennent des dates.

Je dois ensuite comparer ces dates avec celles qui se trouvent dans la cellule "d'en-tête" en haut de chaque colonne (date de fin).

Si cette date est inférieure ou égal à la date de fin la cellule doit se mettre en jaune et si la date est supérieure à la date de fin la cellule doit se mettre en rouge.

Je n'arrive pas à faire fonctionner le défilement des colonnes et des lignes avec range

Pouvez-vous m'aider?

Merci d'avance!

BZH83

Bonjour,

oui, cela part du bonne intention mais cela ne finit pas bien car tes dates ne sont pas des dates, c'est du texte !!

donc 17.03.2020 est inférieur à 16.01.2020 ........ CQFD

ton fichier risque de conduire à des formules matricielles extraordinairement complexes !

peux-tu mettre des vraies dates ?

Ah oui effectivement...

Oui avec une macro je peux convertir le texte en date.

D'ailleurs il faut que je convertisse quelles cellules en format date? Date de fin? cellules de la zone à traiter? les deux?

Les 2. Et séparer date et autres commentaires...

Mais bien sûr on pourrait aussi faire cela en macro (mais je préfère les MFC)

Finalement, je dois comparer par rapport à la date du jour mais le problème reste le même car:

- le format est sous JJ.MM.AAAA et non JJ/MM/AAAA

Y a-t-il une possibilité de passer sous format date seulement le début de la cellule (les 10 premiers caractères formant la date)?

'Code couleur
    dc = Sheets(1).Cells(4, Columns.Count).End(xlToLeft).Column
    dl = Sheets("extract").Range("B" & Rows.Count).End(xlUp).Row

    For j = 5 To dc
        For i = 5 To dl
            If Cells(i, j) <> "" Then
                'Si la date de la cellule est inférieure à la date du jour :rouge
                If Mid(Cells(i, j).Value, 1, 10) <= Date Then
                    Cells(i, j).Interior.Color = 255
                'Sinon : jaune
                Else: Cells(i, j).Interior.ColorIndex = 27
                End If
            End If
        Next i
    Next j

Dans ce cas,

à tester ...

ladate=dateserial(Mid(Cells(i, j).Value, 1, 2),Mid(Cells(i, j).Value, 4, 2),Mid(Cells(i, j).Value, 7, 4))

et tu compare ladate à date

'Code couleur
    dc = Sheets(1).Cells(4, Columns.Count).End(xlToLeft).Column
    dl = Sheets(1).Range("B" & Rows.Count).End(xlUp).Row

    For j = 5 To dc
        For i = 5 To dl
            If Cells(i, j) <> "" Then
                ladate = DateSerial(Mid(Cells(i, j).Value, 1, 2), Mid(Cells(i, j).Value, 4, 2), Mid(Cells(i, j).Value, 7, 4))
                'Si la date de la cellule est inférieure à la date du jour :rouge
                If ladate <= Date Then
                    Cells(i, j).Interior.Color = 255
                'Sinon : jaune
                Else: Cells(i, j).Interior.ColorIndex = 27
                End If
            End If
        Next i
    Next j

Je vais tester ça!

Merci!

Merci Steelson

Ca fonctionne à merveille!

En revanche j'ai juste modifié cette ligne

ladate = DateSerial(Mid(Cells(i, j).Value, 7, 4), Mid(Cells(i, j).Value, 4, 2), Mid(Cells(i, j).Value, 1, 2))

carle format de la fonction DateSerial est (year, month, day)

Encore merci!

Tu as raison !! mea culpa

Rechercher des sujets similaires à "comparaison date colorisation"