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
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$1Ainsi 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