Je cherche à calculer le nombre d'heures de nuit (entre 21:00 et 6:00) pour
des positions de travail pouvant avoir 3 vacations par jour.
Par exemple : De 19:00 à 22:00, De 22:30 1:35, De 4:30 à 6:30 (les horaires
sont sur la même ligne, dans des colonnes adjacentes).
*Résultat attendu 5:35*
J'ai monté une usine à gaz avec 4 colonnes intermédiaires contenant des
formules avec des si, et, ou imbriqués. Ca marche, mais c'est lourd...
Si l'un d'entre vous pouvait m'aiguiller sur une solution plus légère (et
plus élégante), ma reconnaissance n'aurait d'égal que mon admiration.
;-))
A vous lire bientôt, j'espère,
--
Bien cordialement,
=====================================
P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net
Mais ça, j'ai pô trouvé.
1. Autre cas non-géré (mais plausible celui-là) 13:00 22:00 22:30 01:35 04:30 06:30 'causera des difficultés alors que 14:00 22:00 22:30 01:35 04:30 06:30 ' passe Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda). Il n'y a guère que les cadres et les dirigeants qui soient corvéables à merci.
Ce genre de problème génère plus de 70 cas possibles si on teste les bornes explicitement. AMA, la stratégie consistant à déterminer une heure mitoyenne est condamnée à l'échec puisqu'il y aura toujours une heure se situant en deça (ou au-dessus) qui aménera une comptabilisation erronée du temps (mais tu peux me confondre, pas de problème) :-) Dans sa question d'origine, Patrick parle de déterminer des heures de
nuit et, dans tous les cas, il y a bien un moment où il faudra arrêter une journée. L'heure heure mitoyenne variable peut aisément devenir fixe en fonction de sa réponse mais, comme tu le dis, ne couvrira elle aussi pas tous les cas. Il serait également possible de considérer une facturation sur plusieurs jours par exemple. La seule vraie solution serait d'ajouter la date dans les entrées, d'où disparition du problème de limite. Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu nous lis ;o)
2. T'as pas besoin d'Application.Volatile. Exact aussi; toutefois, note que l'on ne saurait se passer de
Misange [ Bise amicale ;o) ]
3. Au lieu de deb = "21:00" CDbl(TimeValue(deb)) pourquoi pas: deb = TimeSerial(21,0,0) La première solution m'avait uniquement attiré pour une question de
présentation de données.
Amicalement
FxM [Rappel pour ceusse qui reviennent de Mars : c'est la fête des Mères]
Bonsoir Daniel,
Merci pour le code.
Z'en prie.
1. Autre cas non-géré (mais plausible celui-là)
13:00 22:00 22:30 01:35 04:30 06:30 'causera des difficultés
alors que
14:00 22:00 22:30 01:35 04:30 06:30 ' passe
Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda).
Il n'y a guère que les cadres et les dirigeants qui soient corvéables à
merci.
Ce genre de problème génère plus de 70 cas possibles si on teste les bornes
explicitement.
AMA, la stratégie consistant à déterminer une heure mitoyenne est condamnée à
l'échec puisqu'il y aura toujours une heure se situant en deça (ou au-dessus)
qui aménera une comptabilisation erronée du temps (mais tu peux me confondre,
pas de problème) :-)
Dans sa question d'origine, Patrick parle de déterminer des heures de
nuit et, dans tous les cas, il y a bien un moment où il faudra arrêter
une journée. L'heure heure mitoyenne variable peut aisément devenir fixe
en fonction de sa réponse mais, comme tu le dis, ne couvrira elle aussi
pas tous les cas.
Il serait également possible de considérer une facturation sur plusieurs
jours par exemple. La seule vraie solution serait d'ajouter la date dans
les entrées, d'où disparition du problème de limite.
Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu
nous lis ;o)
2.
T'as pas besoin d'Application.Volatile.
Exact aussi; toutefois, note que l'on ne saurait se passer de
Misange [ Bise amicale ;o) ]
3.
Au lieu de
deb = "21:00"
CDbl(TimeValue(deb))
pourquoi pas:
deb = TimeSerial(21,0,0)
La première solution m'avait uniquement attiré pour une question de
présentation de données.
Amicalement
FxM
[Rappel pour ceusse qui reviennent de Mars : c'est la fête des Mères]
1. Autre cas non-géré (mais plausible celui-là) 13:00 22:00 22:30 01:35 04:30 06:30 'causera des difficultés alors que 14:00 22:00 22:30 01:35 04:30 06:30 ' passe Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda). Il n'y a guère que les cadres et les dirigeants qui soient corvéables à merci.
Ce genre de problème génère plus de 70 cas possibles si on teste les bornes explicitement. AMA, la stratégie consistant à déterminer une heure mitoyenne est condamnée à l'échec puisqu'il y aura toujours une heure se situant en deça (ou au-dessus) qui aménera une comptabilisation erronée du temps (mais tu peux me confondre, pas de problème) :-) Dans sa question d'origine, Patrick parle de déterminer des heures de
nuit et, dans tous les cas, il y a bien un moment où il faudra arrêter une journée. L'heure heure mitoyenne variable peut aisément devenir fixe en fonction de sa réponse mais, comme tu le dis, ne couvrira elle aussi pas tous les cas. Il serait également possible de considérer une facturation sur plusieurs jours par exemple. La seule vraie solution serait d'ajouter la date dans les entrées, d'où disparition du problème de limite. Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu nous lis ;o)
2. T'as pas besoin d'Application.Volatile. Exact aussi; toutefois, note que l'on ne saurait se passer de
Misange [ Bise amicale ;o) ]
3. Au lieu de deb = "21:00" CDbl(TimeValue(deb)) pourquoi pas: deb = TimeSerial(21,0,0) La première solution m'avait uniquement attiré pour une question de
présentation de données.
Amicalement
FxM [Rappel pour ceusse qui reviennent de Mars : c'est la fête des Mères]
Daniel.M
Salut,
Je me lance. ±-SI(A1>«S("21:00");A1;ABS("21:00"))+"24:00"-C1+D1-E1+SI(F1<«S("6:00") ;F1;ABS("6:00"))
Avec les constantes, tu pourrais même la simplifier:
±-SI(A1>=Haut;A1;Haut)+1-C1+D1-E1+SI(F1<ºs;F1;Bas) et même: ±-MAX(A1;Haut)+1-C1+D1-E1+MIN(F1;Bas)
Malheureusement, elle ne fonctionne pas (car elle ne teste pas les 'débordements' qu'aux extrémités, A1 et F1). Pour des exemples :
1. Autre cas non-géré (mais plausible celui-là) 13:00 22:00 22:30 01:35 04:30 06:30 'causera des difficultés alors que 14:00 22:00 22:30 01:35 04:30 06:30 ' passe Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda). Il n'y a guère que les cadres et les dirigeants qui soient corvéables à merci.
Ah, les normes nationales! :-) J'ai abordé le problème d'un point de vue plus théorique. Au fond, c'est le même problème que celui qui consiste à savoir combien d'heures de nuit (entre 21h et 6h, mettons) une machine en panne entre HeureDébut et HeureFin fait-elle perdre? Dans le problème de Patrick, il y a 3 pannes (c'est ce qui correspond aux vacations) mais c'est la même idée.
... Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu nous lis ;o)
T'as bien raison. J'attend d'ailleurs une réponse moi aussi. :-)
Salutations,
Daniel M.
Bonsoir Fx,
1. Autre cas non-géré (mais plausible celui-là)
13:00 22:00 22:30 01:35 04:30 06:30 'causera des difficultés
alors que
14:00 22:00 22:30 01:35 04:30 06:30 ' passe
Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda).
Il n'y a guère que les cadres et les dirigeants qui soient corvéables à
merci.
Ah, les normes nationales! :-)
J'ai abordé le problème d'un point de vue plus théorique. Au fond, c'est le même
problème que celui qui consiste à savoir combien d'heures de nuit (entre 21h et
6h, mettons) une machine en panne entre HeureDébut et HeureFin fait-elle perdre?
Dans le problème de Patrick, il y a 3 pannes (c'est ce qui correspond aux
vacations) mais c'est la même idée.
...
Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu
nous lis ;o)
T'as bien raison. J'attend d'ailleurs une réponse moi aussi. :-)
1. Autre cas non-géré (mais plausible celui-là) 13:00 22:00 22:30 01:35 04:30 06:30 'causera des difficultés alors que 14:00 22:00 22:30 01:35 04:30 06:30 ' passe Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda). Il n'y a guère que les cadres et les dirigeants qui soient corvéables à merci.
Ah, les normes nationales! :-) J'ai abordé le problème d'un point de vue plus théorique. Au fond, c'est le même problème que celui qui consiste à savoir combien d'heures de nuit (entre 21h et 6h, mettons) une machine en panne entre HeureDébut et HeureFin fait-elle perdre? Dans le problème de Patrick, il y a 3 pannes (c'est ce qui correspond aux vacations) mais c'est la même idée.
... Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu nous lis ;o)
T'as bien raison. J'attend d'ailleurs une réponse moi aussi. :-)
Salutations,
Daniel M.
Patrick Bastard
Bonjour, *Daniel*. *Pour reprendre les termes de ton intervention* -voir en fin de message :
Bienvenue Patrick.
Merci pour tes paroles de bienvenue.
On va regarder cela. Es-tu plus favorable à une solution VBA?
Le classeur que j'ai mis à dispo sur le site de Misange ne contient pas de code VBA, car je ne maîtrise pas, loin de là. Mais si c'est LA solution, restons ouverts : Oui, bien sûr VBA me conviendrait, et d'autant plus si le code était commenté, ce qui me (nous) permettrait de progresser.
;-))
Je profite de ce jour du 6 juin pour proposer aux lecteurs une pensée émue pour tous ceux qui ont traversé la mare, il y a 60 ans, pour libérer la France de la barbarie nazie.
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net
Bonjour, *Daniel*.
*Pour reprendre les termes de ton intervention* -voir en fin de message :
Bienvenue Patrick.
Merci pour tes paroles de bienvenue.
On va regarder cela. Es-tu plus favorable à une solution VBA?
Le classeur que j'ai mis à dispo sur le site de Misange ne contient pas de
code VBA, car je ne maîtrise pas, loin de là.
Mais si c'est LA solution, restons ouverts : Oui, bien sûr VBA me
conviendrait, et d'autant plus si le code était commenté, ce qui me (nous)
permettrait de progresser.
;-))
Je profite de ce jour du 6 juin pour proposer aux lecteurs une pensée émue
pour tous ceux qui ont traversé la mare, il y a 60 ans, pour libérer la
France de la barbarie nazie.
--
Bien cordialement,
==================================== P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net
Bonjour, *Daniel*. *Pour reprendre les termes de ton intervention* -voir en fin de message :
Bienvenue Patrick.
Merci pour tes paroles de bienvenue.
On va regarder cela. Es-tu plus favorable à une solution VBA?
Le classeur que j'ai mis à dispo sur le site de Misange ne contient pas de code VBA, car je ne maîtrise pas, loin de là. Mais si c'est LA solution, restons ouverts : Oui, bien sûr VBA me conviendrait, et d'autant plus si le code était commenté, ce qui me (nous) permettrait de progresser.
;-))
Je profite de ce jour du 6 juin pour proposer aux lecteurs une pensée émue pour tous ceux qui ont traversé la mare, il y a 60 ans, pour libérer la France de la barbarie nazie.
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net
Patrick Bastard
Bonjour à toi aussi, *FxM*. *Je te remercie de ton intervention* -voir en fin de message :
le commentaire de Daniel me plait bien :
"J'ai abordé le problème d'un point de vue plus théorique. Au fond, c'est le même problème que celui qui consiste à savoir combien d'heures de nuit (entre 21h et 6h, mettons) une machine en panne entre HeureDébut et HeureFin fait-elle perdre? Dans le problème de Patrick, il y a 3 pannes (c'est ce qui correspond aux vacations) mais c'est la même idée."
L'objectif, pour mon cas, est de calculer la part de nuit réalisée par un salarié, quelles que soient les heures de prise et de fin de service. Il y a bien sût la législation qui prévoit : - pas plus de 8h pour un salarié qui travaille habituellement de nuit, - pas plus de 13h d'amplitude, - pas plus de 10h de travail par jour - Pause mini de 20 mn après 6h de travail consécutif J'en passe...
(horaire) Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda). Il n'y a guère que les cadres et les dirigeants qui soient corvéables à merci.
Mais il y a aussi les dépassements imprévus imposés par l'activité
Il serait également possible de considérer une facturation sur plusieurs jours par exemple. La seule vraie solution serait d'ajouter la date dans les entrées, d'où disparition du problème de limite. Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu nous lis ;o)
Le fait d'ajouter les jours est une solution qui ne convient pas dans ce cas, car les horaires sur lesquels sont calculées les heures de nuit sont le résultat d'une recherche en table.
Merci de ta collaboration,
Bisous aux mères
Pensée émue à ceux qui y étaient il y a 60 ans.
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net
Bonjour à toi aussi, *FxM*.
*Je te remercie de ton intervention* -voir en fin de message :
le commentaire de Daniel me plait bien :
"J'ai abordé le problème d'un point de vue plus théorique. Au fond, c'est le
même
problème que celui qui consiste à savoir combien d'heures de nuit (entre 21h
et
6h, mettons) une machine en panne entre HeureDébut et HeureFin fait-elle
perdre?
Dans le problème de Patrick, il y a 3 pannes (c'est ce qui correspond aux
vacations) mais c'est la même idée."
L'objectif, pour mon cas, est de calculer la part de nuit réalisée par un
salarié, quelles que soient les heures de prise et de fin de service.
Il y a bien sût la législation qui prévoit :
- pas plus de 8h pour un salarié qui travaille habituellement de nuit,
- pas plus de 13h d'amplitude,
- pas plus de 10h de travail par jour
- Pause mini de 20 mn après 6h de travail consécutif
J'en passe...
(horaire) Plausible soit, mais pas vraiment légal en regard du Code du
Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda).
Il n'y a guère que les cadres et les dirigeants qui soient corvéables
à merci.
Mais il y a aussi les dépassements imprévus imposés par l'activité
Il serait également possible de considérer une facturation sur
plusieurs jours par exemple. La seule vraie solution serait d'ajouter
la date dans les entrées, d'où disparition du problème de limite.
Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu
nous lis ;o)
Le fait d'ajouter les jours est une solution qui ne convient pas dans ce
cas, car les horaires sur lesquels sont calculées les heures de nuit sont le
résultat d'une recherche en table.
Merci de ta collaboration,
Bisous aux mères
Pensée émue à ceux qui y étaient il y a 60 ans.
--
Bien cordialement,
==================================== P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net
Bonjour à toi aussi, *FxM*. *Je te remercie de ton intervention* -voir en fin de message :
le commentaire de Daniel me plait bien :
"J'ai abordé le problème d'un point de vue plus théorique. Au fond, c'est le même problème que celui qui consiste à savoir combien d'heures de nuit (entre 21h et 6h, mettons) une machine en panne entre HeureDébut et HeureFin fait-elle perdre? Dans le problème de Patrick, il y a 3 pannes (c'est ce qui correspond aux vacations) mais c'est la même idée."
L'objectif, pour mon cas, est de calculer la part de nuit réalisée par un salarié, quelles que soient les heures de prise et de fin de service. Il y a bien sût la législation qui prévoit : - pas plus de 8h pour un salarié qui travaille habituellement de nuit, - pas plus de 13h d'amplitude, - pas plus de 10h de travail par jour - Pause mini de 20 mn après 6h de travail consécutif J'en passe...
(horaire) Plausible soit, mais pas vraiment légal en regard du Code du Travail
français (10 h par jour, 11 heures de coupure pour un salarié lambda). Il n'y a guère que les cadres et les dirigeants qui soient corvéables à merci.
Mais il y a aussi les dépassements imprévus imposés par l'activité
Il serait également possible de considérer une facturation sur plusieurs jours par exemple. La seule vraie solution serait d'ajouter la date dans les entrées, d'où disparition du problème de limite. Je crois raisonnable de laisser la parole au demandeur. Patrick, si tu nous lis ;o)
Le fait d'ajouter les jours est une solution qui ne convient pas dans ce cas, car les horaires sur lesquels sont calculées les heures de nuit sont le résultat d'une recherche en table.
Merci de ta collaboration,
Bisous aux mères
Pensée émue à ceux qui y étaient il y a 60 ans.
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net