Alterner les couleurs de cellules en fonction des dates qui y apparaissent

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'ai une liste de dates aléatoires (appartenant à un intervalle de dates déterminées) triées chronologiquement.
La macro qui réalise ce tri marche maintenant très bien. Dans l'apparition aléatoire des dates, certaines ont parfois la même année et, dans le tableau, sont regroupées chronologiquement. Comment s'y prendre pour qu'il y ait une alternance de couleur de cellules afin de mieux distinguer dans le tableau les différentes années.
Exemple : le tableau me donne ceci :
Lunes 19/01/1981 ---> cellule bleue
Domingo 12/07/1981 ---> cellule bleue
Viernes 21/01/1983 ---> cellule blanche
Domingo 01/05/1983 ---> cellule blanche
Jueves 10/10/1985 ---> cellule bleue
Jueves 31/12/1987 ---> cellule blanche
Sábado 27/08/1988 ---> cellule bleue
Jueves 22/09/1988 ---> cellule bleue
Miércoles 12/04/1989 ---> cellule blanche
Jueves 13/04/1989 ---> cellule blanche
Jueves 08/02/1990 ---> cellule bleue
Viernes 21/12/1990 ---> cellule bleue
Miércoles 31/07/1991 ---> cellule blanche
Viernes 03/02/1995 ---> cellule bleue

Merci d'avance pour toute aide.
 

Pièces jointes

  • Dates Aléatoires.xlsm
    21.9 KB · Affichages: 91
  • Dates Aléatoires.xlsm
    21.9 KB · Affichages: 84
  • Dates Aléatoires.xlsm
    21.9 KB · Affichages: 85
Dernière édition:

piga25

XLDnaute Barbatruc
Re : Alterner les couleurs de cellules en fonction des dates qui y apparaissent

Bonjour,

Avec une colonne supplémentaire pour faire apparaître uniquement l'année (colonne pouvant être masquée par la suite), puis sélectionner le tableau et y attribuer une mise en forme conditionnelle avec cette formule :
=MOD(ENT(SOMMEPROD(1/NB.SI($B$1:$B1;$B$1:$B1)));2)>0

En colonne A = Vos dates
En colonne B = " =ANNEE(A1) " et à recopier vers le bas
 

Pièces jointes

  • 1Piga25.xlsx
    10.4 KB · Affichages: 67
  • 1Piga25.xlsx
    10.4 KB · Affichages: 65
  • 1Piga25.xlsx
    10.4 KB · Affichages: 68
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Alterner les couleurs de cellules en fonction des dates qui y apparaissent

Bonsoir Magic_Doctor, piga25,

Un essai sans colonne auxilliaire avec une MFC de formule:
Code:
=EST.IMPAIR(NB(SI(ANNEE($E$5:$E5)<>SIERREUR(ANNEE($E$4:$E4);0);LIGNE($E$4:$E4))))
 

Pièces jointes

  • Dates Aléatoires v1.xlsm
    19.5 KB · Affichages: 48

Magic_Doctor

XLDnaute Barbatruc
Re : Alterner les couleurs de cellules en fonction des dates qui y apparaissent

Bonsoir piga25,

Merci pour ta réponse. En fait, je voudrais résoudre ce problème au moyen de VBA uniquement sans avoir à rajouter une colonne supplémentaire et devoir passer par les formats conditionnels.
J'essaye donc d'y parvenir en VBA.

Bonne soirée.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Alterner les couleurs de cellules en fonction des dates qui y apparaissent

(re)

Un essai avec une macro "Colorier". Cette macro a été rajoutée à la macro du bouton "Nouvelles dates".

Le code:
VB:
Sub colorier()
Dim bleu, blanc, couleur
Dim tablo, i&, xrg As Range

bleu = RGB(145, 200, 250)
blanc = RGB(255, 255, 255)
couleur = bleu
With Sheets("Dates")
  tablo = .Range(.Range("e5"), .Range("e5").End(xlDown)).Value
  Set xrg = .Range("e5")
  xrg.Interior.Color = couleur
  For i = 2 To UBound(tablo)
    Set xrg = xrg.Offset(1)
    If Year(tablo(i, 1)) <> Year(tablo(i - 1, 1)) Then couleur = IIf(couleur = bleu, blanc, bleu)
    xrg.Interior.Color = couleur
  Next i
End With
End Sub
 

Pièces jointes

  • Dates Aléatoires v2.xlsm
    21.9 KB · Affichages: 73

Magic_Doctor

XLDnaute Barbatruc
Re : Alterner les couleurs de cellules en fonction des dates qui y apparaissent

Bonjour mapomme,

Je viens d'essayer ta dernière modif avec la macro "Colorier". Ça marche très bien. Je garderai donc cette solution.
Comme j'aime bien nommer les plages de la feuille (pratique par la suite si l'on modifie la feuille), j'ai fait les modifications suivantes :
VB:
Sub Colorier()
'mapomme
    Dim bleu, blanc, couleur, tablo, i&, xrg As Range, sh As String
    sh = ActiveSheet.Name
    bleu = RGB(145, 200, 250)
    blanc = RGB(255, 255, 255)
    couleur = bleu
    With Sheets(sh)
        tablo = .[ColonneDates].Value
        Set xrg = .[ColonneDates].Rows(1)
        xrg.Interior.Color = couleur
        For i = 2 To UBound(tablo)
            Set xrg = xrg.Offset(1)
            If Year(tablo(i, 1)) <> Year(tablo(i - 1, 1)) Then couleur = IIf(couleur = bleu, blanc, bleu)
            xrg.Interior.Color = couleur
        Next i
    End With
End Sub
Encore merci pour ton aide.
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 530
Membres
111 190
dernier inscrit
clmtj