Page 1 sur 1
Calcul des heures de dimanche entre deux dates
Publié : 14 févr. 2009 22:59
par Will_06
Bonsoir,
Considérons les heures de nuit de 21:00 à 6:00 (hn) et les heures de dimanche/jours fériés de 6:00 à 21:00 (hdjf).
J'aimerais pouvoir calculer entre deux dates les heures hdjf. Sachant que l'heure de début ou de fin de période peut tomber dans la journée de dimanche (ex : du vend. 13/02/09 14:00 au dim. 15/02/09 12:00). On doit donc trouver 6:00 de hdjf.
J'essaye de m'inspirer de la formule de Loopingss sur le calcul des heures de nuit entre deux dates, mais sans succès. De plus, il faut au préalable déterminer si la période couvre un dimanche ou un jour férié. Mais comment ? J'ai essayé avec la fonction MOD.
Merci d'avance pour votre aide.
Will
PS : J'ai joint un fichier avec les données. Pour simplifier les données ont été nommées.
Re: Calcul des heures de dimanche entre deux dates
Publié : 15 févr. 2009 07:25
par squenson
Cela me parait tres difficile d'avoir toutes les conditions dans une formule. Je propose donc la creation d'une table contenant tous les jours de l'annee avec le calcul des heures pour chaque periode. L'inconvenient est bien sur que l'on ne peut calculer qu'une periode a la fois. Je joins un exemple qui ne prend en compte que des dates en janvier.
Re: Calcul des heures de dimanche entre deux dates
Publié : 18 févr. 2009 16:57
par Will_06
Bonjour,
Merci pour ta réponse squenson, que je n'ai pas encore exploité à fond, parce que j'espère toujours trouver une solution sous forme de formule. Mais c'est vrai que je sèche dessus.
En attendant, quelqu'un peut-il me dire comment traduire cette formule qui fonctionne sous Excel mais qui est mal interprétée par Calc ?
Elle permet de compter le nombre de dimanche inclus dans la période.
Ou dd = Date Début
Et df = Date Fin
Merci.
Re: Calcul des heures de dimanche entre deux dates
Publié : 18 févr. 2009 18:08
par Michel JANZEF
Bonjour
Pouvez-vous envoyer le fichier d'exemple contenant cette formule ; c'est plus facile pour faire les essais.
Re: Calcul des heures de dimanche entre deux dates
Publié : 18 févr. 2009 20:17
par squenson
Que voilà une belle formule ! La solution consiste dans Calc à ajouter dans la fonction INDIRECT une référence à une cellule et pas seulement une ligne :
Code : Tout sélectionner
=SOMMEPROD((JOURSEM(LIGNE(INDIRECT("A" & dd & ":A" &df));2)=7)*1)
Décomposons :
INDIRECT("A" & dd & ":A" &df) : retourne une plage du genre A39834:A39883. L'astuce est qu'une date est représentée par un entier.
LIGNE(...) : retourne le numéro de ligne de chaque cellule de la plage. On transforme ainsi une plage en une suite d'entier.
JOURSEM(...) : retourne le jour de la semaine de chaque ligne, et comme une date = un nombre, on retourne un chiffre de 1 à 7
... = 7 : retourne VRAI pour un dimanche, ou FAUX pour un autre jour (le paramètre 2 dans la fonction JOURSEM compte à partir de LUNDI=1)
... * 1: Change VRAI en 1, FAUX en 0
SOMMEPRODUIT(...): fait la somme de tous les 1, donc de tous les dimanches !
Re: Calcul des heures de dimanche entre deux dates
Publié : 19 févr. 2009 21:17
par Will_06
Squenson, je ne comprends pas la fonction Indirect incluse dans la formule. Notamment, la syntaxe de la plage à inclure. Pourrait-tu l'intégrer dans un fichier exemple. Ce qui m'aiderait beaucoup dans sa compréhension. D'avance je te remercie.
Re: Calcul des heures de dimanche entre deux dates
Publié : 20 févr. 2009 06:41
par squenson
Voila !
Re: Calcul des heures de dimanche entre deux dates
Publié : 20 févr. 2009 10:25
par Will_06
OK. Merci.
Mais apparemment, la formule compte les samedi. Et elle les compte même quand les samedis sont les jours bornes, c'est à dire jours de début ou de fin de période.
J'ai essayé de modifier la formule, en vain pour l'instant.
Peut-on avoir une formule qui ne tienne compte que des dimanches qui sont totalement couverts ? Car je pense que les heures des jours bornes qui tombent un dimanche doivent faire l'objet d'une formule spécifique.
Merci.
Re: Calcul des heures de dimanche entre deux dates
Publié : 20 févr. 2009 11:02
par gerard24
Bonjour,
Pour le samedi au lieu du dimanche, c'est parce qu'il manque le type 2 dans la fonction JOURSEM.
Si tu veux exclure le jour du début et celui de fin de période, tu mets dd+1 et df-1 comme référence de lignes.
Code : Tout sélectionner
=SOMMEPROD((JOURSEM(LIGNE(INDIRECT("A"&dd+1 &":A"& df-1));2)=7)*1)
A+