Calendrier, Function férié(i) et ajout de dates dynamiques

babap1

XLDnaute Occasionnel
Bonsoir le forum,

à partir du super travail de @patricktoulon, je souhaite apporter une nouvelle adaptation à partir de la source suivante :

VB:
Private Function férié(i)
    Dim dat As Date, paques As Date, ctrlJ As Object, f As Boolean
    Set ctrlJ = Calendar.Controls("J" & i)
    dat = DateSerial(Cbyear, Cbmonth.ListIndex + 1, ctrlJ.Caption)
    paques = CDate(((Round(DateSerial(Cbyear.Value, 4, (234 - 11 * (Cbyear.Value Mod 19)) Mod 30) / 7, 0) * 7) - 6))
    férié = &HE0E0E0    'couleur base
    Select Case region
    Case 0
     [...]
    Case 1
        Select Case True   ' Francais,French
        Case dat = CDate("01/01/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Nouvel an": f = True                    '  nouvel an       fixe
        Case dat = CDate("01/05/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Fete du travail": f = True              '  fete du travail fixe
        Case dat = paques: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Pâques": f = True                                               '  paques ok        calculée
        Case dat = paques + 39: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Ascension": f = True                                       '  ascension        calculée
        Case dat = paques + 49: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Pentecote": f = True                                       '  pentecote        calculée
        Case dat = paques + 50: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Lundi de Pentecote": f = True                                       '  pentecote        calculée
        Case dat = CDate("08/05/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Fête de la victoire 1945": f = True     '  Victoire 1945    fixe
        Case dat = CDate("14/07/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Fête Nationale": f = True               '  fete nationale   fixe
        Case dat = CDate("15/08/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Assomption": f = True                   '  Assomption       fixe
        Case dat = CDate("01/11/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Toussaint": f = True                    '  Toussaint        fixe
        'Case dat = CDate("11/11/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Armistice 1918": f = True               '  Armistice 1918   fixe
        Case dat = CDate("25/12/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Noël": f = True                         '  noel             fixe
        Case dat = Date: férié = vbYellow: ctrlJ.ControlTipText = "Aujourd'hui"
        Case Weekday(dat, vbMonday) >= 6: f = True
        End Select
    Case 2
     [...]
End Function

J'aimerais ajouter des dates (de congés) qui soient traitées comme des jours fériés. La liste des dates serait données dans la colonne "E" de la feuille "liste" par exemple et il faudrait prendre en compte toutes les dates de cette colonnes.
Mon idée étant d'empêcher la sélection d'une date correspondant à un jour férié, un WE, ET un jour de congé à l'ouverture du calendrier.

Quelqu'un aurait-il une astuce ?

Merci d'avance pour votre coup de pouce. Baptiste
 

patricktoulon

XLDnaute Barbatruc
bonjour
a vrai dire le calendrier au départ n'a pas été conçu comme un applicatif c'est une boite de dialog comme n'importe quel calendrier ou dtpicker existant il se contente d’être un dtpicker
cependant ça doit pourvoir se faire
il me faudrait un fichier réduit a l'essentiel pour faire des test
 

patricktoulon

XLDnaute Barbatruc
re avec la vraie version 4.1.6 adapter (prise encompte de la liste sur sheets("Listes"))
tu n'a rien a faire si tu ajoute des dates a la suite dans la colonne "A" de "Listes"ca les prends en comptes tout seul
 

Pièces jointes

  • Essai_calendar_4.1.6 adapté pour babap1.xlsm
    58.2 KB · Affichages: 26