Problème d'horaire et de temps

Bonjour,

Je dois créer un relevé de production le plus automatique possible sur lequel les ouvriers n'auront qu'à cliquer sur un bouton début et un bouton fin et rien d'autre. Ensuite je crée une formule qui me fait la différence entre l'heure et la date de fin puis l'heure et la date de début, ce qui me donne le temps passé entre le début et la fin du chantier. Mais à cela je dois déduire les temps de pause du midi et de la nuit.

Je dois le faire pour chaque chantier (usine de charpente donc un chantier est une charpente). Le problème est que les chantiers peuvent être commencés avant une pause et finis après ou même commencés avant une pause, puis repris, puis fin de journée, puis repris le lendemain. Et je ne sais pas comment faire pour que les temps de pause soient déduis du temps passé entre le début et la fin de la construction, ce qui me donnerai le temps de production (l'objet tant convoité).

Je sais pas si je suis très clair...

Par exemple un ouvrier commence à usiner un chantier le matin à 8h30 et il le fini le surlendemain à 10h30. Et donc je voudrais que ma fonction calcule qu'il a travaillé 19h. C'est-à-dire les 50h qui se sont écoulées moins 31h de pause (3h) et de nuit (29h).

Evidemment ce n'est qu'un exemple, il faudrait que ce soit applicable à n'importe quelle heure et durée. Y compris comme des durées de 2h sans pause ni nuit.

Je me suis dit qu'il était peut-être possible d'utiliser un planning des horaires de travail que j'applique à une formule.

Enfin si vous avez de meilleures idées simple à mettre en oeuvre je suis tout ouï.

Venez moi en aide s'il vous plait !!

Bonjour,

Il y a 2 parties :

  • la saisie sur un bouton simple
  • le calcul

Voici un exemple sur la partie calcul ... qu'il faudra adapter ensemble :

Mes questions :

  • les pauses sont-elles "fixes" en jour comme en nuit ? voire en équipes de jour ?
  • faut-il tenir compte des we et jours fériés ?
  • pour la saisie ... si plusieurs personnes saisissent, quel est l'identifiant ? le nom de la personne ou le nom du projet ?

J'ai pas encore vu ton fichier que tu m'as envoyé mais d'abord je vais répondre à ce que tu m'as demandé et te remercier.

Le but des boutons justement est que les employers n'aient pas besoin de rentrer les heures ou même les tranches horaires. Mon chef veut qu'il y ait le moins d'interaction possible entre l'ouvrier et le relevé de production.

Mais du coup, les boutons je les ai déjà en partie programmés, ils m'affichent l'heure du début quand je clique sur le bouton début et l'heure de fin quand je clique sur le bouton fin. Ensuite je fais une soustraction entre la fin et le début ce qui me donne le temps passé sur le chantier (pauses comprises). Et ensuite j'ai besoin d'en déduire les pauses pour connaitre le temps de production.

De plus oui les pauses sont fixes, elles sont tous les jours de 12h à 13h30 et les horaires de travail sont toujours les même de 8h à 12h puis de 13h30 à 17h30 sauf le vendredi où la fin de journée est à 16h30. Et quand je parlais de la nuit en fait (je me suis mal exprimé) je voulais parler de la fin de journée, il n'y a pas d'équipe de nuit (ce qui facilite les choses non?).

Et oui il faudrait tenir compte des jours fériés et des week-ends.

Et non il n'y a pas besoin qu'un utilisateur rentre son nom ou son identifiant. Cette feuille n'est pas nominative, le but n'est vraiment pas de les fliquer pour savoir s'ils font leurs heures, le chef à confiance, mais il veut que les relevés soient "très" précis (on est pas à la minutes près mais a la dizaine de minutes).

ok

je vais donc simplifier les formules et tenir compte des pauses prédéfinies, de l'absence de nuit, etc. ...

à suivre

Si tu me fais ça tu es un vrai génie et je t'en remercie beaucoup d'avance!

=NB.JOURS.OUVRES.INTL(A2;C2;"0000111";JF)*DurT1
+NB.JOURS.OUVRES.INTL(A2;C2;"1111011";JF)*DurT2
-(B2-SI(JOURSEM(A2;2)=5;DebT2;DebT1)-SI(B2>FP;FP-DP;0))
-(SI(JOURSEM(C2;2)=5;FinT2;FinT1)-D2-SI(D2<DP;FP-DP;0))

J'ai nommé des zones dans l'onglet horaires

si tu trouves une erreur, fais moi en part ...

C'est parfait, ça marche très bien, merci beaucoup.

Par contre j'ai pas compris ce que c'était que ça?

=NB.JOURS.OUVRES.INTL(A2;C2;"0000111";JF)*DurT1
+NB.JOURS.OUVRES.INTL(A2;C2;"1111011";JF)*DurT2
-(B2-SI(JOURSEM(A2;2)=5;DebT2;DebT1)-SI(B2>FP;FP-DP;0))
-(SI(JOURSEM(C2;2)=5;FinT2;FinT1)-D2-SI(D2<DP;FP-DP;0))

C'est LA formule ...

1ère ligne : nombre de jours ouvrés sauf vendredi * durée de travail (DurT1)

2ème ligne : nombre de vendredis ouvrés * durée de travail (DurT2)

3ème ligne : suppression des heures non travaillées du premier jour, avec test si début est supérieur à la fin de pause (dans ce cas on ne tient pas compte de la durée de la pause)

4ème ligne : suppression des heures non travaillées sur le projet le dernier jour, avec test si fin est inférieur à début de pause (dans ce cas on ne tient pas compte de la durée de la pause)

La formule utilise NB.JOURS.OUVRES.INTL qui permet de définir sur 7 digits les jours de la semaine à prendre en compte.

D'accord,si tu le dis... Les lois de l'informatique m'ont toujours dépassées à compter de mon premier jour en prépa...

Mais tu l'as notée où cette formule?

Dans le fichier joint, cellule E2 ... je prends l'habitude de joindre le fichier mais aussi de rappeler dans la réponse la formule ou le code utilisé.

Il y avait aucun autre fichier joint...

Et je l'ai pas trouvé dans l'interface VBA

Le fichier est joint ici : https://forum.excel-pratique.com/viewtopic.php?p=778939#p778939

et ce n'est pas une macro, pas besoin de VBA. C'est une formule classique.

capture d ecran 775

Ah si ,en fait j'avais vu...

Bon bah merci beaucoup!

Et est-ce que tu serais capable de me faire la même formule mais pour la date et l'heure affichée dans la même case? Ou alors une formule qui m'affiche juste l'heure dans une case et la date dans l'autre?

Car là mon problème c'est que mes boutons affichent l'heure et la date dans la même case.

C'est la programation de mes boutons, si tu sais me faire ça autrement je suis preneur car avec cette programmation la formule que tu m'as donnée ne marche plus...

Cells(10, 2) = Now
    Cells(10, 2).NumberFormat = "m/d/yyyy"
    Cells(10, 3) = Now
    Cells(10, 3).NumberFormat = "hh:mm"

Car mon problème c'est que les employers ne doivent pas rentrer les horaires, ils doivent juste avoir accès à un bouton

Oui, c'est possible, tout est possible !

Peux-tu poster ce que tu as déjà réalisé ?

J'aime ton optimisme.

Tu veux mon classeur?

6releve-prod.xlsm (42.55 Ko)

En parallèle, j'ai repris ma proposition que voici (onglet version v2)

=NB.JOURS.OUVRES.INTL(ENT(A2);ENT(B2);"0000111";JF)*DurT1
+NB.JOURS.OUVRES.INTL(ENT(A2);ENT(B2);"1111011";JF)*DurT2
-(MOD(A2;1)-SI(JOURSEM(ENT(A2);2)=5;DebT2;DebT1)-MAX(0;MIN(FP;MOD(A2;1))-DP))
-(SI(JOURSEM(ENT(B2);2)=5;FinT2;FinT1)-MOD(B2;1)-MAX(0;FP-MAX(DP;MOD(B2;1))))

C'est un poil plus complexe avec les valeurs horodatées, car quand on extrait les heures et que l'on compare aux bornes, il peut y avoir des effets d'arrondis ... donc au lieu de faire des comparaisons dans la formule, je joue avec les min/max.

Il te manquait la définition de la zone "JF"

9releve-prod.xlsm (37.85 Ko)

Et bien je te remercie pour ton aide encore une fois!

Je ferme pas le sujet au cas où j'ai encore besoin de tes services

Enfin tu risques d'en avoir marre de moi à la fin!

et à la prochaine !

Rechercher des sujets similaires à "probleme horaire temps"