Excel : Addition de jours ouvrables (lu-sa)

Résolu
Bonjour,

Je recherche un moyen d'ajouter à une date x (A2) 12 jours ouvrables (du lundi au samedi) et non ouvrés (lundi au vendredi) comme le propose la formule SERIE.JOUR.OUVRE.
Je tiens comte des jours fériés qui ne sont pas ouvrables.

Pour le moment, j'ai réussi à faire ceci qui me donne le résultat voulu mais cela prend énormément de temps à s'exécuter :

J'utilise des formules nommées :
zero : =Feuil1!$A2
un : =zero+SI(OU(JOURSEM(zero+1)=1;NB.SI(feries;zero+1));SI(OU(JOURSEM(zero+2)=1;NB.SI(feries;zero+2));3;2);1)
deux : =un+SI(OU(JOURSEM(un+1)=1;NB.SI(feries;un+1));SI(OU(JOURSEM(un+2)=1;NB.SI(feries;un+2));3;2);1)
trois : =deux+SI(OU(JOURSEM(deux+1)=1;NB.SI(feries;deux+1));SI(OU(JOURSEM(deux+2)=1;NB.SI(feries;deux+2));3;2);1)
quatre : =trois+SI(OU(JOURSEM(trois+1)=1;NB.SI(feries;trois+1));SI(OU(JOURSEM(trois+2)=1;NB.SI(feries;trois+2));3;2);1)
cinq : =quatre+SI(OU(JOURSEM(quatre+1)=1;NB.SI(feries;quatre+1));SI(OU(JOURSEM(quatre+2)=1;NB.SI(feries;quatre+2));3;2);1)
six : =cinq+SI(OU(JOURSEM(cinq+1)=1;NB.SI(feries;cinq+1));SI(OU(JOURSEM(cinq+2)=1;NB.SI(feries;cinq+2));3;2);1)
sept : =six+SI(OU(JOURSEM(six+1)=1;NB.SI(feries;six+1));SI(OU(JOURSEM(six+2)=1;NB.SI(feries;six+2));3;2);1)
huit : =sept+SI(OU(JOURSEM(sept+1)=1;NB.SI(feries;sept+1));SI(OU(JOURSEM(sept+2)=1;NB.SI(feries;sept+2));3;2);1)
neuf : =huit+SI(OU(JOURSEM(huit+1)=1;NB.SI(feries;huit+1));SI(OU(JOURSEM(huit+2)=1;NB.SI(feries;huit+2));3;2);1)
dix : =neuf+SI(OU(JOURSEM(neuf+1)=1;NB.SI(feries;neuf+1));SI(OU(JOURSEM(neuf+2)=1;NB.SI(feries;neuf+2));3;2);1)
onze : =dix+SI(OU(JOURSEM(dix+1)=1;NB.SI(feries;dix+1));SI(OU(JOURSEM(dix+2)=1;NB.SI(feries;dix+2));3;2);1)
douze : =onze+SI(OU(JOURSEM(onze+1)=1;NB.SI(feries;onze+1));SI(OU(JOURSEM(onze+2)=1;NB.SI(feries;onze+2));3;2);1)

Quelqu'un aurait-il une solution pour alléger ce code ?

info : A2 = date ; feries = feuille avec les jours fériés

Merci
Michel

3 réponses

  1. Bonjour,
    Essayez cette formule matricielle proposée par Jacques Boisgontier:

    A2 contient la date et B2 le nombre de jours ouvrés à ajouter, le champ des jours fériés est nommé " fériés"
    =PETITE.VALEUR(SI((JOURSEM(A2+LIGNE(1:50);2)<7)*(NB.SI(fériés;A2+LIGNE(1:50))=0);A2+LIGNE(1:50));B2)
    valider avec maj+ctrl+entrée
    0
    1. Bonjour,

      Essaies :
      =NB.JOURS.OUVRES(Date_de_début;Date_de_fin;Jours_fériés)+SOMMEPROD(1*(JOURSEM(LIGNE(INDIRECT(Date_de_début&":"&Date_de_fin)))=7))-SOMMEPROD((JOURSEM(Jours_fériés)=7)*1;(Jours_fériés>=Date_de_début)*1;(Jours_fériés<=Date_de_fin)*1)

      C'est à dire :
      =Jours_ouvrés+Nb_samedis-Nb_samedis_fériés
      avec :
      Jours_ouvrés=NB.JOURS.OUVRES(Date_de_début;Date_de_fin;Jours_fériés)
      Nb_samedis=SOMMEPROD(1*(JOURSEM(LIGNE(INDIRECT(Date_de_début&":"&Date_de_fin)))=7))
      Nb_samedis_fériés=SOMMEPROD((JOURSEM(Jours_fériés)=7)*1;(Jours_fériés>=Date_de_début)*1;(Jours_fériés<=Date_de_fin)*1)

      D'après d'une formule de Mytå

      Cordialement
      Patrice
      0
      1. Bonjour Patrice 33740,
        Il me semble que le résultat cherché est une date située 12 jours après la date en A2. On ne cherche pas un nombre de jours?
        Autre remarque: Nb_samedis_fériés=SOMMEPROD(1*(JOURSEM(Jours_fériés)=7)) va compter tous les samedis fériés même ceux qui ne sont pas compris entre la date de début et la date de fin.
        Mais je peux me tromper ça arrive souvent ;-)
        Attendons des nouvelles de Michel.
        0
      2. Oups! j'avais trop rapidement !

        PS : J'ai corrigé le Nb_samedis_fériés pour tenir compte de ta remarque

        Cordialement
        Patrice
        0
    2. Merci à vous deux,

      Devant trouver la date de fin, j'ai adapté comme ceci :

      =PETITE.VALEUR(SI((JOURSEM(A2+LIGNE($1:$50);2)<7)*(NB.SI(feries;A2+LIGNE($1:$50))=0);A2+LIGNE($1:$50));12)

      valider avec maj+ctrl+entrée

      D'après mes premiers contrôles, ça semble bien fonctionner.

      bàv
      Michel
      0