Comment faire une recherche sur une date calculée ?

Bonjour,

Je suis totalement débutant en VBA.

J'essaie de faire une macro me permettant d’élaborer un planning annuel qui affiche automatiquement les jours fériés.

Et je bloque sur les jours fériés à date variable (vendre saint, pâques, ...).

Je voudrais rechercher la date de pâque, par exemple, et faire apparaitre les cellules en bleu. Mais je coince complétement sur la recherche de date.

Pourriez vous m'aider ?

Merci beaucoup par avance !

J'essaie de joindre le fichier, et je copie le code en dessous, au cas où

Sub JoursFeries()

'Déclariation des variables

Dim annee As Integer

annee = Range("B1")

Application.EnableEvents = False

'Variables liées à Paques

Dim Paques As Date

Dim VendrediSaint As Date

Dim LundiPaques As Date

Dim Ascension As Date

Dim Pentecote As Date

Dim LundiPentecote As Date

Dim Assomption As Date

'Variables liées aux autres jours férié

Dim JourDeLAn As Date

Dim FeteTravail As Date

Dim Armis45 As Date

Dim FeteNat As Date

Dim Assomp As Date

Dim Touss As Date

Dim Armis18 As Date

Dim Noel As Date

Dim StEt As Date

'Calcul de la date du dimanche de paques

A = annee Mod 19

B = annee Mod 4

C = annee Mod 7

D = ((A * 19) + 24) Mod 30

'clauses aux limites pour D

'selon

If D = 29 Then D = 28

If D = 28 And A > 10 Then D = 27

'Fin clauses aux limites

E = ((2 * B) + (4 * C) + (6 * D) + 5) Mod 7

If D + E >= 10 Then Paques = D + E - 9 & "/04/" & annee Else Paques = 22 + D + E & "/03/" & annee

'Fin de calcul de la date du dimanche de paques

'Détermniation des jours fériés découlants du Dimanche de Paques

VendrediSaint = Paques - 2

LundiPaques = Paques + 1

Ascension = Paques + 39

Pentecote = Paques + 49

LundiPentecote = Pentecote + 1

'Détermniation des autres jours fériés

JourDeLAn = DateSerial(annee, 1, 1)

FeteTravail = DateSerial(annee, 5, 1)

Armis45 = DateSerial(annee, 5, 8)

FeteNat = DateSerial(annee, 7, 14)

Assomp = DateSerial(annee, 8, 15)

Touss = DateSerial(annee, 11, 1)

Armis18 = DateSerial(annee, 11, 11)

Noel = DateSerial(annee, 12, 25)

StEt = DateSerial(annee, 12, 26)

'Affichage des dates des jours fériés découlants du Dimanche de Paques

' Range("D5") = Paques

' Range("D4") = VendrediSaint

' Range("D6") = LundiPaques

' Range("D9") = Ascension

' Range("D10") = Pentecote

' Range("D11") = LundiPentecote

'Affichage des autres jours fériés

' Range("D3") = JourDeLAn

' Range("D7") = FeteTravail

' Range("D8") = Armis45

' Range("D12") = FeteNat

' Range("D13") = Assomp

' Range("D14") = Touss

' Range("D15") = Armis18

' Range("D16") = Noel

' Range("D17") = StEt

' Fin de définition des jours fériés

'Changement de couleur de fond des cellules à jour férié fixe

If Range("B3") = JourDeLAn Then

Range("B3:I3").Interior.ColorIndex = 8

End If

If Range("AH3") = FeteTravail Then

Range("Ah3:AO3").Interior.ColorIndex = 8

End If

If Range("AH10") = Armis45 Then

Range("AH10:AO10").Interior.ColorIndex = 8

End If

If Range("B51") = FeteNat Then

Range("B51:I51").Interior.ColorIndex = 8

End If

If Range("K52") = Assomp Then

Range("K52:Q52").Interior.ColorIndex = 8

End If

If Range("AH38") = Touss Then

Range("AH38:AO38").Interior.ColorIndex = 8

End If

If Range("AH48") = Armis18 Then

Range("AH48:AO48").Interior.ColorIndex = 8

End If

If Range("AP62") = Noel Then

Range("Ap62:Aw62").Interior.ColorIndex = 8

End If

If Range("AH10") = StEt Then

Range("AH10:AO10").Interior.ColorIndex = 8

End If

'Changement de couleur de fond des cellules à jour férié mobile

With Range("Z3:Z33")

Set R = .Find(VendrediSaint, LookIn:=xlValues)

If Not (R Is Nothing) Then

FirstFound = R.Adress

Do

R.Offset(0, 1).Value = "trouver"

Set R = .FindNext(R)

Loop While R.Address <> FirstFound

Else

MsgBox ("pas trouvé")

End If

End With

'Couleur des samedi et dimanche

End Sub

Bonjour

Je te propose une autre solution

Merci beaucoup !

C'est beaucoup plus simple comme ca !!

Juste un petit problème : quand on modifie l'année 2015 par exemple, il n'y a plus que la 1 ere case du jour férié qui se met en couleur. Et je n'arrive pas à comprendre pourquoi

Un idée ?

Bonjour

Non la MEFC fonctionne bien

Il reste une couleur de fond (ta macro ?)

Enlèves toutes les couleurs dans ton calendrier

Penses à modifier l'année aussi dans la page "Jours fériés"

Je te conseille de n'avoir qu'un endroit pour modifier l'année ainsi toutes les formules se rapporteront à cette cellule, cela évitera ce qui t'arrive

Exemple dans la page "Jours fériés" case B1 tu tapes la formule suivante

='Feuille de pontage'!$B$1

Ainsi lorsque tu modifieras l'année dans la page "Feuille de pontage" les jours fériés seront actualisés

Merci !

J'ai changé l'onglet "jours fériés" en faisant reférence à l'année de l'onglet feuille de pontage et ca marche !!

Merci beaucoup

Rechercher des sujets similaires à "comment recherche date calculee"