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

A voir également:

3 réponses

tontong Messages postés 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
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 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
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