Excel : Addition de jours ouvrables (lu-sa)

Résolu/Fermé
Michel - 30 août 2012 à 10:57
 Michel - 30 août 2012 à 16:45
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

tontong
Messages postés
2512
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
17 mai 2022
1 022
30 août 2012 à 11:52
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
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
1 750
Modifié par Patrice33740 le 30/08/2012 à 14:17
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
2512
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
17 mai 2022
1 022
30 août 2012 à 14:02
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
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
1 750
30 août 2012 à 14:22
Oups! j'avais trop rapidement !

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

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