Calculer le Temps de travail , week-end et jours fériés

Bonjour,

J'ai déjà fouillés dans le forum pour voir si j'allais trouver la solution à mon problème mais il y a tellement de cas différents que je préfère mettre ma propre demande avec un Titre PARLANT

Je suis plutôt un adepte de la macro mais lorsqu'il s'agit de faire des formules direct c'est un peu plus difficile pour moi.

J'aimerais obtenir un temps passé sur la production d'une pièce (sur machine)

La machine en question m'enregistre un fichier où il est indiqué l'heure du début et l'heure de la fin de la production.

Exemple :

09/04/2021 07:30
12/04/2021 14:30

Mais si la production dur plusieurs jours j'aimerais connaitre le temps réel passé par rapport aux horaires de présence de l'opérateur et des jours fériés.

Je n'arrive pas à déduire les jours fériés

Je joint un fichier avec mes tableaux

Merci pour votre aide

Eric

36jefekoi.xlsm (10.27 Ko)

Bonjour,

Une formule en D12, testée sur un faible échantillon de données juste pour que vous compreniez le principe : je comptabilise le nombre de jours ouvrés auquel j'enlève 2 (début/fin) que je multiplie par les h quotidiennes. Ensuite je soustrais h début prod - h fin équipe via MOD (et la pause si inclus dans l'intervalle) et h début équipe - h fin de prod (et la pause si inclus dans l'intervalle) que j'ajoute alors au premier résultat.

=SOMME((NB.JOURS.OUVRES(D10;D11;B22:B33)-2)*D9;SI(MOD(D10;1)<MOD(D6;1);MOD(D8;1)-MOD(D10;1)-MOD(D7;1);MOD(D8;1)-MOD(D10;1));SI(MOD(D11;1)>MOD(D6;1);MOD(D11;1)-MOD(D5;1)-MOD(D7;1);MOD(D11;1)-MOD(D5;1)))

Cdlt,

Merci Ergotamine,

Bigreee la formule :) c'est pour cela que je préfère les macros, une formule est facilement perdu alors qu'une macro :)

Très bien je vais encore faire quelques essai mais je pense que je tiens le bon bout.. Encore merci :)

Je crois qu'il y a une erreur

Paul
Identifiant201232
Heure de départ07:30:00
Heure de pause + Temps11:00:00
Temps de pause00:20:00
Heure de Fin14:30:00
Temps de présence06:40:00
Jour + Heure démarrage production03/02/2021 07:30
Jour + Heure fin production04/04/2021 07:30
Temps passé sur la production16:00:00

Sur 2 mois de temps il a passé 16h00 de production ? il manque quelques chose

Bonjour,

Oui le format personnalisé pour afficher les jours excusez moi, je l'avais mis sur mon fichier de travail.

Cdlt,

2021 04 03 10 35 46 jefekoi xlsm lecture seule excel

Merci,

Tu n'as pas à d'excuser, c'est déjà pas mal d'aider

Par contre si tu peux m'aider pour ceci:

Dans mon onglet où je récupère l'heure de départ et l'heure d'arriver je le fait de cette manière

Sheets("Accueil").Range("E15").Value = "=MIN(Temps)" :  Sheets("Accueil").Range("E16").Value = "=MAX(Temps)"

Seulement avant de faire cette opération j'ai un filtre qui fait une cherche du poste en question

Ce que je voudrait c'est qu'il recherche uniquement le temps de ce poste mais pas de la totalité ("Temps" est la colonne en question)

    ActiveSheet.Range("Temps").AutoFilter Field:=1, Criteria1:=    Worksheets("Accueil").Range("C29").Value

Bonjour,

Par formule matricielle à valider par CTRL+SHIFT+ENTER peut être ce qui est dynamique en fonction du code renseigné ? Sinon on peut boucler en VBA ou encore passer par POWER QUERY mais il faudra un fichier représentatif. En tout cas MIN ne prend pas en compte les cellules visibles uniquement, sauf si associé à la fonction FILTRE, non disponible sous EXCEL 2016.

=MIN(SI(TEMPS!$A$2:$A$6=D4;TEMPS!$B$2:$B$6))

Cdlt,

Merci Ergotamine,

C'est terminé pour aujourd'hui .. en fait c'est l'heure de l'apéro :)

Bon week-end à toi et tes proches

Et encore un grand merci :)

Bonjour,

Pas de soucis.

Bon WE à vous.

Cdlt,

Le programme fonctionne bien :)

Peut on convertir le Format de cellule en heures simplement ?

jj" Jour(s)" hh"h" mm"m"

Pour en revenir à la formule matricielle , le souci est que dans l'onglet où il récupère le MAX et le MIN

Il y a des postes plus grand que d'autres donc je ne peux pas utiliser ta formule

=MIN(SI(TEMPS!$A$2:$A$6=D4;TEMPS!$B$2:$B$6))

Car il peut y avoir du $B$1200

Bon en même temps je peut peut être essayer de récupérer la dernière ligne de cette manière (En macro) :

Fin = Sheets("Données").Range("Temps").End(xlDown).Row

Bonjour,

Vous avez fait une erreur en D9, le résultat renvoyé n'est pas de 06:40 mais de 1j et 06:40 ce qui m'a longuement posé problème car j'arrivai à un nombre d'heures incohérentes, d'où les 28j, qui était totalement faux. Merci de corriger par :

=D8-(D5+D7)

Dans votre demande utilisez, je pense, ce format "[hh]:mm" en D12. Le résultat me semble plus cohérent. Je vous laisse essayer.

Je n'ai pas compris votre problème de poste car je n'ai pas de jeu de données. Peu importe la durée de chaque poste, la formule matricielle récupère l'ID de la personne et renvoie la valeur minimale rencontrée sur la plage temps. Il est possible de définir une plage dynamique afin d'évaluer toujours les dernières données renseignées.

Mais sans fichier représentatif, pas d'évaluation désolé c'est compliqué de travailler à l'aveugle ou chronophage de reconstruire un jeu de donnée qui ne correspond pas à ce que l'utilisateur possède.

Cdlt,

PS : Dans le cas où vous fournissez un fichier, merci d'indiquer la valeur attendu à la place de chaque formule.

Merci Ergomine, je vais voir ça demain car là j'ai éteint mon PC et je suis maintenant sur MAC :)

Je vais ajouter un fichier avec l'onglet des données :)

Bonne soirée et merci

Bonsoir,

Ah oui non, MAC indigestion pour moi désolé . Même si je pense que des formules de ce type devraient quand même fonctionner je ne fais pas d'adaptation cross système d'exploitation.

Cdlt,

Oui je sais j'avais acheté une License sur MAC mais j'ai regretté après :)

C'est pour cela que j'ai acheté un petit PC .. mais je bosse via mon MAC hi hi (Microsoft Remote Desktop) (Services Bureau à distance)

Bon finalement j'ai redémarré le PC et j'ai préparé un fichier (bien sur l'onglet des données n'est pas au complet)

Sur l'onglet Accueil j'ai fait un menu déroulant pour les prénoms (Bizarrement il y a qu'avec le Prénom de Alain que la formule fonctionne)

Pour le Menu déroulant c'est juste pour aller plus vite dans les recherches de formules mais à la finale il y aura un tableau pour chaque opérateur

Merci pour ton aide

11temps-postes.xlsm (20.93 Ko)

Bonsoir,

C'est "normal", vous n'allez que jusqu'à la ligne 60, qui ne concerne qu'Alain.

Je vous joins votre fichier avec une table structurée, c'est beaucoup plus simple de travailler avec, la colonne s’agrandit automatiquement via les références structurées.

Je vous laisse tester.

Cdlt,

Merci Ergotamine

Bien sur le fichier que j'ai mis en ligne n'est pas le vrai, j'ai donc essayé de refaire la même chose que toi sur mon fichier

J'ai renommer les colonnes et tableau

Station est égal à Prénoms

Et il ne veut pas de ma formule malgré que j'ai fait le CTRL+SHIFT+ENTER (voir capture d'écran)

C'est BDD[Station] qui fait un problème alors que j'ai bien nommer le tableau BDD

Oupsss il est 4h28, je continu à chercher .. je vais peut être trouver ...

capture 2021 04 04 a 04 36 17

Haaa c'est bon j'ai trouvé en fait il faut prendre le nom de la colonne , lorsque l'on a créé le tableau (Mettre sous forme de tableau)

Par défaut moi c'est "Colonne17" donc BDD[Colonne17]

Bonjour,

Oui lorsque je parle de table structurée ce n'est pas un nommage de plage tout simple, il s'agit d'un tableau avec toute une architecture et interaction qui facilite l'exploitation des données derrière.

N'hésitez pas à me faire un retour et a passer le sujet en résolu si besoin.

Cslt,

Merci,

Par contre je voudrais récupérer le prénom des opérateurs

MonTableau=BDD

Colonne 17 = Noms des postes

Colonne 18 = Prénoms

Dans une cellule je fais comme ceci :

=SI(MonTableau[Colonne17]="Poste 1";MonTableau[Colonne18])

Il m'affiche "Faux"

comment ce fait il ?

Pourtant il cherche dans le tableau MonTableau colonne Noms des postes et il devrait me donner sur la même ligne le Prénoms

En tout cas avec toi j'ai appris pas mal de chose intéressante que je vais certainement réutiliser ;) (tu peux me dire "Tu" ce n'est pas un problème.)

Colonne16Colonne17Colonne18
TempsStationOpérateur
2/3/21 12:55Poste 1Eric

J'ai même essayé au plus simple :

=SI("Station"="Poste 1";"Oui")

Bonjour,

Quand tu dis récupérer le prénom des opérateurs ça veut dire quoi ? Créer la liste de prénom automatiquement pour alimenter ta liste de validation ?
Les formules matricielles sont un peu plus compliquées que ça à comprendre, il faut s'imaginer qu'une formule matricielle créé un tableau de valeurs non visibles, constitués de valeurs mais dont seule une est renvoyée.

Par exemple sur l'exemple que je t'avais joins la formule a utiliser en F1 est

=SIERREUR(INDEX(BDD[Prénoms];PETITE.VALEUR(SI(FREQUENCE(SI(BDD[Prénoms]<>"";EQUIV(BDD[Prénoms];BDD[Prénoms];0)); LIGNE(BDD[Prénoms])-LIGNE($A$1)+1);LIGNE(BDD[Prénoms])-LIGNE($A$1)+1);LIGNES(A$1:A1)));"")

Toujours à valider par CTRL+SHIFT+ENTRER puis à tirer. Sous EXCEL 365 ça se limite à la fonction FILTRE, mais je n'ai pas cette version.

Aussi obtenable facilement par POWER QUERY ou encore via mondico sous VBA.

Cdlt,

Rechercher des sujets similaires à "calculer temps travail week end jours feries"