Macro mise en forme par rapport à la date système

cibleo

XLDnaute Impliqué
Bonjour le forum :)

Voilà, la macro ci-dessous est censée m'appliquer un fond vert aux cellules de la colonne A dont la date est supérieure à la date système de mon ordinateur.

Code:
Sub DateSupCoul1()
Dim cell As Range, DerLiR As Long
DerLiR = Sheets("Synthese").Range("A65536").End(xlUp).Row
For Each cell In Range("A2:A" & DerLiR)
  'If cell.Value > CDate(Format(Date, "ddd dd mmm yy")) Then
  'If CDate(Format(cell.Value, "ddd dd mmm yy")) > CDate(Format(Date, "ddd dd mmm yy")) Then
  If Format(cell.Value, "ddd dd mmm yy") > Format(Date, "ddd dd mmm yy") Then
  cell.Interior.ColorIndex = 10
  Else 'Sinon
    cell.Interior.ColorIndex = xlNone 'la Couleur de la cellule est Transparente
  End If 'Fin de la condition
Next cell
End Sub

Nous sommes donc le dimanche 03 janvier 2010.

Le résultat n'est pas concluant voir ci-dessous.
Toute les dates se colorent en vert :cool:

Coul.jpg

Le format des cellules en colonne A : jjj jj mmm aa
La date système de l'ordinateur est bien réglée.

Qu'est-ce qui cloche ?

Cibleo
 

Pierrot93

XLDnaute Barbatruc
Re : Macro mise en forme par rapport à la date système

Bonjour Cibleo

si la valeur de tes cellules est reconnue comme une date, le code ci-dessous devrait fonctionner :

Code:
Sub test()
Dim cell As Range
For Each cell In Range("A1:A10")
If cell.Value > Date Then cell.Interior.ColorIndex = 10
Next cell
End Sub

bon après midi
@+
 

Efgé

XLDnaute Barbatruc
Re : Macro mise en forme par rapport à la date système

Bonjour Pierrot93, cibleo

Une version sans limites de lignes et remise à blanc des dates "dépassées:

Code:
Sub Couleur_date()
Dim i
For i = 1 To Range("A65536").End(xlUp).Row
If Cells(i, 1).Value > Date Then
Cells(i, 1).Activate
ActiveCell.Interior.ColorIndex = 10
Else
ActiveCell.Interior.ColorIndex = xlNone
End If
Next i
End Sub

Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : Macro mise en forme par rapport à la date système

Re, bonjour Efgé

on pourrait également le coder ainsi :

Code:
Sub test()
Dim cell As Range
For Each cell In Range("A1:A10")
    cell.Interior.ColorIndex = IIf(cell.Value > Date, 10, xlNone)
Next cell
End Sub

@+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro mise en forme par rapport à la date système

Bonjour à tous,

au cas où il ne serait pas nécessaire de le faire par macro, une mise en forme conditionnellle

si la valeur de la cellule est supérieure à =aujourdhui()

donnera le même résultat

à+
Philippe
.
 

Efgé

XLDnaute Barbatruc
Re : Macro mise en forme par rapport à la date système

Re Pierrot93, Bonjour phlaurent55,
Un mixte des solutions par macro:
Code:
Sub Couleur_date3()
For i = 1 To Range("A65536").End(xlUp).Row
    Cells(i, 1).Interior.ColorIndex = IIf(Cells(i, 1).Value > Date, 10, xlNone)
Next i
End Sub

Plus court, je ne voit pas...:p
Cordialement
 

cibleo

XLDnaute Impliqué
Re : Macro mise en forme par rapport à la date système

Bonjour Pierrot, Efgé

Cela paraît simple, mais vos 3 solutions (VbA) ne fonctionnent pas.

Y a un truc que je ne saisis pas :

En colonne A, le format appliqué est celui là : jjj jj mmm aa

Or un point vient toujours s'incruster après les 3 premiers caractères de la date.

Heure2.jpg

J'applique souvent ce format dans mes différents fichiers et il n'y a jamais la présence de ce point. :cool:

Cibleo
 

Efgé

XLDnaute Barbatruc
Re : Macro mise en forme par rapport à la date système

Re à tous,
cibleo
J'ai applqué votre format personalisé. Je n'ai pas de . après le jour.
et les propositions fonctionnent.
Est te vous sûr que votre format de cellule est bien, avant modification personelle, un format date valide?
Si non pourriez vous poster un fichier exemple?
Cordialement
 

cibleo

XLDnaute Impliqué
Re : Macro mise en forme par rapport à la date système

Bonjour phlaurent55,

En bonus ta solution :confused:

Heure3.jpg

Le fichier est au post 43 dans le lien ci-dessous (Attention Dater les onglets à 2010)

https://www.excel-downloads.com/threads/vba-compter-1-occurence-dans-une-plage-dynamique.133061/

Pour être complet :

Dans le programme, c'est l'instruction ci-dessous qui conditionne le format de la colonne A feuille "Synthese".

Code:
Private Sub remplirsynthese(£nomfeuille As Variant, Vsearch As String)
Dim Plage As Range, cel As Range, AdrDeb As String
With Sheets(£nomfeuille)
    'Ici Plage de recherche par chauffeurs (ComboChauffeurs)
    Set Plage = .Range("A4:A" & .Range("a65536").End(xlUp).Row)
    With Plage
   ' expression.Find(, After, LookIn, LookAt, , SearchDirection, MatchCase, MatchByte, SearchFormat
      Set cel = .Find(What:=Vsearch, LookAt:=xlWhole, SearchOrder:=xlByColumns)
      If Not cel Is Nothing Then
      trouve = True
          AdrDeb = cel.Address
          Do
            DerLiR = DerLiR + 1
            [COLOR=sienna][B]ShtR.Cells(DerLiR, 1) = Format(£nomfeuille, "ddd dd mmm yy")[/B][/COLOR]
            Sheets(£nomfeuille).Range("A" & cel.Row).Copy Destination:=ShtR.Cells(DerLiR, 2)
            Sheets(£nomfeuille).Range("B" & cel.Row & ":L" & cel.Row).Copy Destination:=ShtR.Cells(DerLiR, 3)
            ShtR.Cells(DerLiR, 18).FormulaR1C1 = "=RC[-1]-RC[-4]"
            ShtR.Cells(DerLiR, 21).FormulaR1C1 = "=RC[-3]*0.85-RC[-2]-RC[-1]"
            Set cel = .FindNext(cel)
          Loop While Not cel Is Nothing And AdrDeb <> cel.Address
      End If
     End With
 
     End With
End Sub
Cibleo
 
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro mise en forme par rapport à la date système

Re,

en termes plus clairs , ça fonctionne ou pas ????????????????

ou tu utilises un format de cellule qui fut abandonné par l'armée prussienne ??????

Edit: j'étais en train de modifier ce message quand Efgé a pensé la même chose que moi
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Macro mise en forme par rapport à la date système

cibleo,
Votre dernier exemple (sur la mise en forme de phlaurent55) prouve que votre format n'est pas reconnu.
Repasser en format date normal (*01/01/2010) et regardez si c'est bon.
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Macro mise en forme par rapport à la date système

cibleo,
Vous êtes en format standart, il ne s'agit pas de dates mais de textes; vous ne pourrez pas manipuler du texte comme des dates. Changez vos données et tout rentrera dans l'ordre...
Cordialement
 

cibleo

XLDnaute Impliqué
Re : Macro mise en forme par rapport à la date système

Re à tous,

Constatez de vous même dans le fichier joint :

Feuille "Synthese", colonne A, le format semble bon.

J'ai placé vos 3 macros en fin de module 1.

Même la MFc traditionnelle de phlaurent55 ne marche pas.

Cibleo
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
323

Statistiques des forums

Discussions
314 654
Messages
2 111 598
Membres
111 215
dernier inscrit
fateh