Le jour de paie peut être l'un des huit jours possibles :
- le 12 (si le 13 est le Vendredi saint, car alors les 13, 14 et 15 forment un week-end de trois jours)
- le 13 (s'il s'agit du dernier jour ouvrable de la semaine) * )
- le 14 (s'il s'agit du dernier jour ouvrable de la semaine) * )
- le 15 (si c'est un jour ouvrable) * )
- le 4èmedernier jour du mois (si le 3èmedernier jour est le Vendredi Saint, car alors les trois derniers jours du mois forment un week-end de trois jours)
- le 3ème et dernier jour du mois (s'il s'agit du dernier jour ouvrable de la semaine). * )
- l'avant-dernier jour du mois (s'il s'agit du dernier jour ouvrable de la semaine). * )
- le dernier jour du mois (si c'est un jour ouvrable) * )
__________
* Un jour ouvrable est du lundi au vendredi sauf le Vendredi saint .
Dans Excel 2013, WEEKDAY(_date_, 2)
renvoie 1 si le date
est le lundi, , 7 si le date
c'est dimanche. Il est indiqué qu'il s'agit d'une extension récente ; Si cela ne fonctionne pas pour vous, dites-le, et nous pourrons y remédier. En utilisant ce WEEKDAY
fonction, et la EOMONTH
fonction qui nous indique le dernier jour d'un mois, nous pouvons traduire la liste ci-dessus par la formule suivante :
=AND(OR(AND(DAY(A1)=12,A1+1=F$1), AND(DAY(A1)>=13,DAY(A1)<=14,OR(WEEKDAY(A1,2)=5,A1+1=F$1)), AND(DAY(A1)=15,WEEKDAY(A1,2)<=5), AND(EOMONTH(A1,0)-A1=3,A1+1=F$1), AND(EOMONTH(A1,0)-A1<=2,EOMONTH(A1,0)-A1>=1,OR(WEEKDAY(A1,2)=5,A1+1=F$1)), AND(A1=EOMONTH(A1,0),WEEKDAY(A1,2)<=5)), A1<>F$1)
où la date du Vendredi saint (14 avril 2017) est saisie (manuellement) dans la cellule F1
.
Cette formule peut être décomposée grossièrement en
=AND( OR( AND(_something1_), AND(_something2_), AND(_something3_), AND(_something4_), AND(_something5_), AND(_something6_) ), _something7_ )
où
-
_something1_
est DAY(A1)=12,A1+1=F$1
, qui teste pour la première balle (le jeudi 12 du mois, alors que le jour suivant est le Vendredi saint).
-
_something2_
est DAY(A1)>=13,DAY(A1)<=14,OR(WEEKDAY(A1,2)=5,A1+1=F$1)
, qui teste les deuxième et troisième puces (le 13 ou le 14 d'un vendredi ou le jour (jeudi) avant le Vendredi saint).
-
_something3_
est DAY(A1)=15,WEEKDAY(A1,2)<=5)
, qui teste la quatrième puce (le 15 d'un jour de semaine).
-
_something4_
est EOMONTH(A1,0)-A1=3,A1+1=F$1
, qui teste la cinquième puce (4è et dernier jour du mois, lorsque le lendemain est le Vendredi saint).
-
_something5_
est EOMONTH(A1,0)-A1<=2,EOMONTH(A1,0)-A1>=1,OR(WEEKDAY(A1,2)=5,A1+1=F$1)
, qui teste les 6e et 7e balles (2e ou 3e avant-dernier jour du mois, le vendredi ou la veille du vendredi saint).
-
_something6_
est A1=EOMONTH(A1,0),WEEKDAY(A1,2)<=5
, qui teste la huitième puce (dernier jour du mois, un jour de semaine).
-
_something7_
es A1<>F$1
, qui vérifie qu'il s'agit bien du Vendredi saint et l'exclut. Sans ce test, nous mettrions en évidence (couleur/ombre) Jeudi 13 avril y Vendredi 14 avril.
Pour tester cela, vous pouvez définir F1
à chacune des dates suivantes pour 2017 et vérifiez que les jours corrects sont mis en évidence.
- Le vrai Vendredi saint de cette année : le 14 avril, ce qui oblige le jour de paie à être le jeudi 13 avril.
- 13 janvier, ce qui obligerait le jour de paie à être le jeudi 12 janvier.
- le 15 septembre (ou le 15 décembre), ce qui obligerait le jour de paie à être le jeudi 14.
- Le vendredi 28 avril, ce qui obligerait le jour de paie à être le jeudi 27 avril.
- 29 septembre, ce qui obligerait le jour de paie à être le jeudi 28 septembre.
- 31 mars (ou 30 juin), ce qui obligerait le jour de paie à être l'avant-dernier jour de ce mois.
Remarque : Si F1
est défini sur une date qui n'est pas un vendredi, des résultats incorrects (par exemple, plus de deux jours de paie dans un mois) s'afficheront.