Comparaison date et colorisation Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
BZH83
Membre habitué
Membre habitué
Messages : 70
Appréciation reçue : 1
Inscrit le : 10 juillet 2018
Version d'Excel : 2010 FR

Message par BZH83 » 26 février 2020, 13:25

Demande aide.xlsm
(17.6 Kio) Téléchargé 2 fois
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 :bof:

Pouvez-vous m'aider?
Merci d'avance!

BZH83
VBA c'est l'éclate! :():
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'025
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 février 2020, 13:29

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 ?

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
BZH83
Membre habitué
Membre habitué
Messages : 70
Appréciation reçue : 1
Inscrit le : 10 juillet 2018
Version d'Excel : 2010 FR

Message par BZH83 » 26 février 2020, 13:38

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?
VBA c'est l'éclate! :():
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'025
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 février 2020, 14:02

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)

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
BZH83
Membre habitué
Membre habitué
Messages : 70
Appréciation reçue : 1
Inscrit le : 10 juillet 2018
Version d'Excel : 2010 FR

Message par BZH83 » 26 février 2020, 14:11

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
VBA c'est l'éclate! :():
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'025
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 février 2020, 14:43

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

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'025
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 février 2020, 14:46

'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

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
BZH83
Membre habitué
Membre habitué
Messages : 70
Appréciation reçue : 1
Inscrit le : 10 juillet 2018
Version d'Excel : 2010 FR

Message par BZH83 » 26 février 2020, 15:45

Je vais tester ça!
Merci!
VBA c'est l'éclate! :():
Avatar du membre
BZH83
Membre habitué
Membre habitué
Messages : 70
Appréciation reçue : 1
Inscrit le : 10 juillet 2018
Version d'Excel : 2010 FR

Message par BZH83 » 26 février 2020, 16:10

Merci Steelson

Ca fonctionne à merveille! :sp:
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!
VBA c'est l'éclate! :():
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'025
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 février 2020, 16:17

Tu as raison !! mea culpa

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message