Mise en forme conditionnelle de certains jours de la semaine

Bonjour,

Je voudrais la formule qui permettrait une mise en forme automatique (par ex. fond jaune) comme la série ci-après:

semaine 1: > mardi

semaine suivante: > mercredi

semaine suivante: > jeudi

semaine suivante: > vendredi

semaine suivante: > lundi

et ainsi de suite pour l'année entière dans le calendrier perpétuel (voir fichier joint).

impératifs:

  • pouvoir choisir dans une liste de choix le premier jour de la série ( 1, 2, 3 , 4, 5, 6 ou 7) qui correspond au 7 premiers jours du mois de janvier.
  • les samedis et dimanches ne font pas partie de la série qui sera mise en forme.
merci.

Bonjour Freydim,

Etablissez un calendrier pour l'année en cours, des dates à impacter avec le nouveau format, le premier mardi + 8 jours pour avoir le mercredi suivant etc..., nommer cette zone Dt8J et utilisez la formule ci-dessous dans le formatage conditionnel, et respectant la priorité des conditions à appliquer.

ESTNUM(EQUIV(Calendrier.$C8;"Dt8J";0))

Bj njhub,

merci pour cette belle formule!

Salut Fredym,

Salut njhub,

voici un code VBA, à coller dans le module VBA de 'Calendrier', qui "fabrique" la série de dates à "jaunir" suite à un double-clic dans les premiers jours de janvier d'une année-calendrier.

Cette liste s'inscrit dans la feuille 'Dates' et reçoit un nom, ex : "Serie2019".

Pour l'instant, je suis bien incapable de créer la formule pour une MFC malgré la proposition de njhub.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim rCel As Range, dDate As Date, iCol%, sCol$
'
If Target.Column Mod 5 = 4 And Weekday(Target.Offset(0, -1), vbMonday) < 6 And Month(Target.Offset(0, -1)) = 1 Then
    Cancel = True
    On Error Resume Next
    With Worksheets("Dates")
        iRow = 1
        dDate = Target.Offset(0, -1)
        iCol = Year(Target.Offset(0, -1)) - 2017
        .Columns(iCol).Value = ""
        .Cells(1, iCol) = "Série jaune " & Year(Target.Offset(0, -1))
        Do
            iRow = iRow + 1
            .Cells(iRow, iCol) = dDate
            dDate = dDate + IIf(Weekday(dDate + 8, vbMonday) > 5, 10, 8)
        Loop While Year(dDate) = Year(Target.Offset(0, -1))
        sCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
        .Range(sCol & "2:" & sCol & .Range(sCol & .Rows.Count).End(xlUp).Row).Name = "Serie" & CStr(Year(Target.Offset(0, -1)))
    End With
    On Error GoTo 0
End If
'
End Sub

Autre solution, full VBA. A voir...

A+

Rechercher des sujets similaires à "mise forme conditionnelle certains jours semaine"