formateur informatique

Compter les Week-End et jours fériés entre deux dates

Accueil  >  Bureautique  >  Excel  >  Excel Avancé  >  Compter les Week-End et jours fériés entre deux dates
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Calculer les jours spéciaux entre deux dates

Dans ce cas pratique Excel, l'utilisateur définit une date de début puis une date de fin.

Nombre de jours fériés et Week-End entre deux dates avec Excel

Aussitôt, nous devons être en mesure de livrer le nombre de jours spéciaux situés entre ces deux bornes, comme l'illustre l'exemple de la capture. Le nombre de jours ouvrés est un calcul trivial. Connaître le nombre de jours fériés et le nombre de Week-End cumulés est un tout autre défi. Et c'est un raisonnement matriciel qui apporte la solution.

Source et présentation du concept
Pour aboutir cette solution, nous suggérons de récupérer un fichier offrant quelques précieuses données. Les deux dates doivent donc être inscrites respectivement en cellules C7 et D7. Sur l'intervalle qui les sépare, les nombres de jours doivent être calculés en fonction de leurs spécificités en cellules D9, D11 et D13.

Sur la droite de cette feuille, vous notez l'énumération des jours fériés pour l'année de la date de début et l'année suivante. En effet, rien n'empêche l'utilisateur de définir une période à cheval sur deux années. Ces jours fériés sont calculés dynamiquement. La formule décisive est inscrite en cellule G4 :

=ARRONDI(DATE(ANNEE(C7); 4; MOD(234-11*MOD(ANNEE(C7); 19); 30))/7; 0)*7-6

Nous l'avons présentée dans une précédente formation. Elle permet de calculer le Dimanche de Pâques en fonction de l'année spécifiée. De ce calcul, les jours fériés des fêtes religieuses se déduisent naturellement. Grâce à ces données dynamiques, nous allons pouvoir entreprendre les calculs des nombres de jours spéciaux situés entre deux dates.

Pour les jours fériés statiques, c'est une formule classique exploitant la fonction Excel Date qui permet de les livrer : =DATE(G6;1;1).

Les jours ouvrés
Nous l'avons déjà présentée, c'est la fonction Excel Nb.Jours.Ouvres qui permet de compter le nombre de jours ouvrés entre deux dates : =NB.JOURS.OUVRES(Début;Fin;Fériés). En premier et deuxième argument, nous devons lui indiquer respectivement la date de début et la date de fin. En troisième et dernier argument, nous devons lui passer la plage de cellules sur laquelle sont recensés les jours fériés. En considérant les Samedis et Dimanches comme les jours de Week-End, elle livrera le nombre de jours effectivement travaillés sur la période.
  • Sélectionner la cellule D9,
  • Taper le symbole égal (=) pour initier la formule,
  • Inscrire la fonction suivie d'une parenthèse, soit : Nb.Jours.Ouvres(,
  • Désigner la date de début en cliquant sur sa cellule C7,
  • Taper un point-virgule (;) pour passer dans l'argument suivant de la fonction,
  • Désigner la date de fin en cliquant sur sa cellule D7,
  • Taper un point-virgule (;) pour passer dans l'argument des jours fériés,
  • Sélectionner la plage de cellules G7:I17,
La colonne vide de séparation n'est pas gênante. Elle ne porte aucune valeur donc aucune date a fortiori. Ainsi, nous englobons dans la sélection les jours fériés recensés sur les deux années.
  • Fermer la parenthèse de la fonction Nb.Jours.Ouvres,
  • Puis, valider le calcul avec la touche Entrée du clavier,
Calculer le nombre de jours ouvrés entre deux dates Excel en excluant les jours fériés

Nous obtenons bien le total du nombre de jours effectivement travaillés sur la période. Les Week-End et jours fériés sont naturellement exclus. Bien sûr, si vous modifiez les bornes de la période, ce total se recalcule automatiquement.

La syntaxe de la formule que nous avons bâtie est la suivante : =NB.JOURS.OUVRES(C7;D7; G7:I17).

Les jours fériés
Pour calculer le nombre de jours fériés entre deux dates, nous devons donc enclencher un raisonnement matriciel. L'astuce consiste à construire une matrice virtuelle représentant toutes les dates situées entre les bornes de la période définie. Nous devons la recouper avec la plage des jours fériés. Si des dates coïncident, nous saurons qu'il s'agit de jours fériés à exclure du décompte. Et pour engager un décompte conditionnel, nous devons exploiter la fonction Excel Nb.Si.
  • Sélectionner la cellule D11 et taper le symbole égal (=) pour débuter la formule,
  • Inscrire la fonction matricielle suivie d'une parenthèse, soit : SommeProd(,
Nous le savons, dans sa version classique, cette fonction permet d'additionner les valeurs multipliées sur les lignes respectives des matrices engagées. Mais lorsqu'elle vérifie des conditions, elle les dénombre et les additionne. Il en résultera le nombre de jours fériés entre les deux dates.
  • Inscrire la fonction de dénombrement conditionnel suivie d'une parenthèse, soit : Nb.Si(,
  • Désigner l'ensemble des jours fériés comme précédemment, soit la plage G7:I17,
Nous spécifions ainsi la plage de cellules sur laquelle nous souhaitons observer la présence de toutes les dates situées entre les bornes de la période définie. Pour cela, en guise de critère à dénombrer, nous devons énoncer toutes ces dates sous forme de matrice virtuelle.
  • Taper un point-virgule (;) pour passer dans l'argument du critère de la fonction Nb.Si,
  • Inscrire la fonction pour la ligne d'une cellule, suivie d'une parenthèse, soit : Ligne(,
Nous n'allons pas lui passer une cellule mais l'ensemble des lignes potentielles qui auraient servi à énumérer toutes les dates situées dans l'intervalle. Et pour que cette fonction retourne le contenu de ces dernières, nous devons exploiter la fonction Indirect.
  • Inscrire la fonction d'interprétation suivie d'une parenthèse, soit : Indirect(,
  • Désigner la première date pour le point de départ de la matrice, soit : C7,
  • Taper le caractère de concaténation (&) pour annoncer la borne inférieure à suivre,
  • Inscrire le symbole deux points entre guillemets, soit : ':',
  • Taper de nouveau le caractère de concaténation (&),
  • Puis, désigner la date de fin en cliquant sur sa cellule D7,
  • Fermer la parenthèse de la fonction Indirect,
  • Fermer la parenthèse de la fonction Ligne,
  • Fermer la parenthèse de la fonction Nb.Si,
  • Puis, fermer la parenthèse de la fonction SommeProd,
  • Enfin, valider la formule avec la touche Entrée du clavier,
Le résultat tombe et sa cohérence est très simple à confirmer en analysant la table des jours fériés recensés dans l'intervalle.

La syntaxe de la formule que nous avons construite est la suivante :

=SOMMEPROD(NB.SI(G7:I17; LIGNE(INDIRECT(C7 & ':' & D7))))

Une fois encore, si vous changez les bornes de la période, le recalcul automatique s'enclenche instantanément pour actualiser le décompte des jours fériés. Par exemple, entre le 1er Novembre 2020 et le 30 Décembre 2020, 3 jours fériés sont naturellement comptabilisés.

Week-End et jours fériés
Désormais, pour dénombrer les jours de Week-End et les jours fériés entre deux dates, nous devons vérifier que ces données ne se recoupent pas. Un jour férié qui tombe un Week-End ne doit pas être comptabilisé deux fois. Nous devons donc vérifier un critère sur le jour de semaine de chaque date de la matrice virtuelle. Pour cela, nous devons exploiter la fonction Excel JourSem. Dans le même temps, nous devons nous assurer que ces jours de Week-End ne sont pas énoncés dans la liste des jours fériés. Ainsi en ne les comptabilisant pas, nous pourrons ajouter les jours fériés de la période pour obtenir le total cumulé exact.

Pour ne pas avoir à reconstruire la matrice virtuelle des dates, il est préférable de commencer par copier sa syntaxe depuis la précédente formule : LIGNE(INDIRECT(C7 &':' & D7)).
  • Sélectionner la cellule D13 et taper le symbole égal (=) pour débuter la formule,
  • Inscrire la fonction matricielle suivie d'une parenthèse, soit : SommeProd(,
  • Ouvrir une première parenthèse pour accueillir la première matrice conditionnelle,
  • Inscrire la fonction pour le numéro de semaine suivie d'une parenthèse, soit : Joursem(,
  • En guise de date, lui passer la matrice des dates, soit : LIGNE(INDIRECT(C7 & ':' & D7)),
  • Taper un point-virgule (;) pour passer dans le second argument de la fonction JourSem,
  • Inscrire le chiffre 2 pour raisonner selon le calendrier français,
Par défaut, cette fonction raisonne en effet sur le calendrier américain. Dans ce contexte, le Dimanche est le premier jour de la semaine et non le septième. Avec le calendrier français, nous allons pouvoir simplifier le double critère.
  • Fermer la parenthèse de la fonction JourSem,
  • Puis, inscrire la condition suivante : >5,
Comme nous le disions et de fait, nous cherchons à repérer dans le calendrier français toutes les dates pour lesquelles le jour de semaine est supérieur à 5. Il ne reste que les Samedis et Dimanches, soit les jours de Week End.
  • Fermer la parenthèse de cette première matrice conditionnelle,
  • Taper le symbole de l'étoile (*) pour annoncer le critère à recouper,
  • Ouvrir une parenthèse pour accueillir la nouvelle matrice conditionnelle,
  • Inscrire la fonction de dénombrement conditionnel suivie d'une parenthèse, soit : Nb.Si(,
  • Désigner l'ensemble des jours fériés recensés, soit la plage de cellules G7:I17,
  • Taper un point-virgule (;) pour passer dans l'argument du critère à compter,
  • Inscrire de nouveau la matrice virtuelle des dates, soit : LIGNE(INDIRECT(C7 & ':' & D7)),
  • Fermer la parenthèse de la fonction Nb.Si,
  • Puis, ajouter le critère suivant : =0,
Nous cherchons donc à vérifier que ces dates identifiées comme jours de Week End, ne sont pas dans le même temps des jours fériés. Si tel est le cas, elles ne sont pas comptabilisées. C'est ainsi que nous allons maintenant pouvoir ajouter ces jours fériés recoupés sans risquer de les doubler dans le décompte.
  • Fermer la parenthèse de cette deuxième matrice conditionnelle,
  • Puis, fermer la parenthèse de la fonction SommeProd,
  • Inscrire le symbole plus (+) pour annoncer le critère à combiner,
  • Puis, reproduire le calcul précédent du décompte des jours fériés :
SOMMEPROD(NB.SI(G7:I17; LIGNE(INDIRECT(C7 & ':' & D7))))
  • Dès lors, valider la formule par la touche Entrée du clavier,
  • Puis, attribuer un format Standard à la cellule pour éviter l'interprétation en date,
Nous obtenons bien le décompte des jours remarquables cumulés et non doublés en cas de recoupement.

Calculer le nombre de jours fériés et de Week End entre deux dates Excel sans les recouper

Comme toujours, si vous modifiez les bornes de la période, vous constatez que les résultats des décomptes s'actualisent parfaitement. La formule que nous avons construite pour compter les Week-End et jours fériés entre deux dates est la suivante :

=SOMMEPROD((JOURSEM(LIGNE(INDIRECT(C7 & ':' & D7)); 2)>5)*(NB.SI(G7:I17; LIGNE(INDIRECT(C7 &':' & D7)))=0)) + SOMMEPROD(NB.SI(G7:I17; LIGNE(INDIRECT(C7 & ':' & D7))))

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn