Excel : Addition de jours ouvrables (lu-sa)

Résolu
Michel -  
 Michel -
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

A voir également:

3 réponses

tontong Messages postés 2584 Statut Membre 1 062
 
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
Patrice33740 Messages postés 8930 Statut Membre 1 781
 
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
tontong Messages postés 2584 Statut Membre 1 062
 
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
Patrice33740 Messages postés 8930 Statut Membre 1 781
 
Oups! j'avais trop rapidement !

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

Cordialement
Patrice
0
Michel
 
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