1 votes

Formatage conditionnel Excel de la date avant le week-end/le jour férié

J'essaie de créer un calendrier de paie. Nous sommes payés deux fois par mois, le 15 et le dernier jour du mois, mais jamais un week-end ou un vendredi saint. Si le 15 ou le dernier jour tombe un week-end, le jour de paie est décalé au vendredi précédent. Si le 15 ou le dernier jour tombe un vendredi saint, le jour de paie est décalé au jeudi précédent.

Comment écrire une fonction de mise en forme conditionnelle pour colorer en rouge les cellules des jours de paie et le faire pour l'année entière ? L'ensemble des données est constitué des dates d'un calendrier d'une année complète sur une feuille de calcul. J'utilise Excel 2016.

1voto

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_ )

  • _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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X