Formules (Monique) pr cpter et lister jrs ouvrés

C

Christian

Guest
Bonjour à tout le forum,

Monique m'a fait des formules pour compter et lister les jours ouvrés de date début à date fin. (ça c'est OK bien c'est Monique);
Pourquoi ai-je un message d'erreur (NB mon fichier est déclaré "calendrier depuis 1904") ?.

Fichier joint...

Bien Amicalement
Christian.
 

Pièces jointes

  • jrsouvres.zip
    37.3 KB · Affichages: 30
J

Jean-Marie

Guest
ATTENTION A L'UTILISATION DE L'OPTION CALENDRIER 1904

Bonjour Christian

L'option de calcul "calendrier 1904", permet de supprimer une anomalie (un bug) dans les séries de date dans l'Excel.
Avec l'option 1900, Excel trouve par son algorithme de calcul, la date 29/2/1900, ce qui est absolument faux.
En cochant l'option "Calendrier 1904", Les ingénieurs de Microsoft ont trouvé un stratège pour éviter l'erreur, tout en conservant leur algorithme. Ils ont rajouté 4 ans aux valeurs des dates.
Oui mais, Procédons à un petit exercice : on fixe en premier l'option 1900 puis on écrit la date 1/1/1900 dans la première ligne, on fait un glisser déposer on descend, on descend jusqu'au 1/1/1904, Excel place cette valeur à la ligne 1462.
Maintenant sans changer les dates, simplement modifier l'option à 1904, les années changent automatiquement nous trouvons à la ligne 1 la date 1/1/1904 et la date 1/1/908 à la ligne 1461. [/b]D'où une erreur d' 1 jour dans les valeurs de date entre l'option 1900 et 1904.[/b]

Donc la formule de Monique est bonne pour le calcul de la date de pâques avec l'option 1900, mais pas pour l'option 1904 (le jour de pâques tombera toujours un samedi) la bonne formule est celle-ci =ARRONDI(DATE(Ann;4;MOD(234-11*MOD(Ann;19);30))/7;)*7-5

L'option 1904 permet aussi de calculer des heures négatives.

@+Jean-Marie
 
C

Christian

Guest
Re: ATTENTION A L'UTILISATION DE L'OPTION CALENDRIER 1904

Bonjour à tout le forum,
Bonjour Jean-Marie,

Merci pour ta réponse et tes explications éclairées.
J'ai copié ta formule (Pâques) c'est ok. Pour le décalage date (1904), j'ai rajouter une colonne (AS) qui sera masquée pour cpter "correctement" les jrs ouvrés, et changé la formule en (AR) c'est OK.
Il me reste un problème ; pourquoi dans la col AV j'ai un message d'erreur du type " #NOMBRE! ", en AV7 (uniquement la 1ère col), si les cellules dates début/fin sont vides (fomule ci-dessous) ???.

Bien Amicalement
Christian

=SI(COLONNE()-COLONNE($AT7)<=NB.JOURS.OUVRES($AO7;$AP7;feries);SERIE.JOUR.OUVRE($AO7-1;COLONNE()-COLONNE($AT7);feries);"")
 
J

Jean-Marie

Guest
Bonjour

Tu as plusieurs solutions :
- Soit de mettre une valeur à zéro dans les cellules AO et AP
- Faire une Mise en Forme conditionnelle pour masquer l'affichage de l'erreur.
- Modifier ta formule
ce qui pourrait donner ceci
=SI(COLONNE()-COLONNE($AT7)<=NB.JOURS.OUVRES(MIN(DATE(AJ6+1;1;1);$AO7);MIN(DATE(AJ6+1;1;1);$AP7);feries);SERIE.JOUR.OUVRE($AO7-1;COLONNE()-COLONNE($AT7);feries);"")
ou
=SI(ET(ESTVIDE(AO7);ESTVIDE(AP7));"";SI(COLONNE()-COLONNE($AT7)<=NB.JOURS.OUVRES($AO7;$AP7;feries);SERIE.JOUR.OUVRE($AO7-1;COLONNE()-COLONNE($AT7);feries);""))

Il y a sûrement d'autres formules.

Tu as le choix

@+Jean-Marie
 
J

Jean-Marie

Guest
Re...

J'ai donné la solution, mais pas l'origine du problème. Ce n'est pas la fonction NB.JOURS.OUVRES($AO7;$AP7;feries) qui pose problème, elle retourne la valeur 1 même si les cellules AO7 et AP7 sont vides.
C'est l'autre fonction SERIE.JOUR.OUVRE qui retourne l'erreur #Nombre.

@+Jean-Marie
 
M

Monique

Guest
Bonjour,

Le fichier d'origine se trouve ici (JoursOuvresChristian.xls) :
<http://www.excel-downloads.com/html/French/forum/messages/1_54643_54643.htm>

Dans ce fichier, la formule de calcul de la date de Pâques fait 701 caractères
Elle fonctionne, que l'on ait coché ou non l'option "Calendrier depuis 1904"
Comme je n'ai jamais rien inventé en la matière, ("la formule de Monique" n'existe pas), la formule que je donne toujours est cette longue formule.
(ou bien je tape des dates bidon sans formule et je préviens)

La formule utilisée aujourd'hui par Christian donne une erreur avec le calendrier 1904,
mais, Jean-Marie, la formule que tu donnes ne fonctionne pas avec le calendrier 1900.

Christian, quand l'option 1904 est cochée, un 0 tapé dans une cellule au format date renvoie "vendredi 01-01-1904" !
Et une cellule vide est prise pour le 01-01-1904 par la fonction NB.JOURS.OUVRES()
Du coup, SERIE.JOUR.OUVRE() perd les pédales (il y a de quoi)
Tu peux faire cet essai :
la formule TEXTE(1;"j") renvoie 1 avec le calendrier 1900, mais elle renvoie 2 avec le calendrier 1904.

J'ai fait des modifications dans ton fichier, je crois que c'est maintenant compatible 1900 et 1904

A la rigueur, si on veut faire court, mais ce n'est pas sympa pour les gens qui n'ont pas Excel en version française ou anglaise :
=ARRONDI(DATE(B$1;4;MOD(234-11*MOD(B$1;19);30))/7;)*7-6+(TEXTE(1;"j")="2")+(TEXTE(1;"d")="2")-(B$1=2049)*7-(B$1=2076)*7
 

Pièces jointes

  • JrsOuvresChristianV1.zip
    26.6 KB · Affichages: 63
C

Christian

Guest
Bonjour à tout le forum,
Bonjour Monique et Jean-Marie,

Merci pour toutes ces explications et ce deux synthèses, je vais pouvoir continuer à travailler sur mon projet.

Bon W/E
Bien Amicalement
a+
Christian
 

Discussions similaires

C
Réponses
1
Affichages
2 K
M

Statistiques des forums

Discussions
312 190
Messages
2 086 044
Membres
103 105
dernier inscrit
fofana