XL 2021 Power Query somme des fin de journée où il y a juste une heure de commencement ?

nunizgb

XLDnaute Junior
Bonjour

J'ai mis dans power query plusieurs source afin d'avoir qu'une table que je peut utiliser dans mon fichier excel et cela marche mais j'ai une Erreur quand j'ai 1 heure de commencement et la fin dans la même journée puis une autre qui commence dans la même journée mais fini le lendemain
Donc j'ai les bonne heures calculer pour celle qui commence et fini la même journée mais pour celle qui commence cette même journee mais fini lendemain.
J'ai d'abord les heures pour la journée et ensuite celle pour lendemain à partir de minuit.

Alors que je voudrais avoir le total depuis le commencement de la journée d'hier.

calculheures.jpg


Donc j'ai créer une colonne personnalise avec la formule Table.AddColumn(#"Lignes filtrées", "Personnalisé", each if [PS] = #time(0,0,0) then Date.AddDays([DATE FS], -1) else [DATE FS])

Afin d'avoir pour des journée où la colonne PS est égale à 0 la date FS soit jour - 1.
Donc pour la journée 5.06.22 j'ai d'abord
PS : 4:55 puis FS 10:50 ensuite PS : 19:55 et FS le 6.6.22 à 2:10
Donc avec cette colonneje voudrais avoir
5.6.22 PS 4:55 FS 10:55 ==> Amplitude 5:55
5.6.22 PS 19:55 FS : 2:10 ==> Amplitude 4:04+2:10=6:14
6.6.22 PS 0:00 FS 0:00

Donc comment écrire en power query code qui cherche la cellule dans la colonne PS qui est égale à 0 puis modifie la date si FS est différent de 0 afin d'avoir la même date que J-1. Puis ensuite faire la somme FS de la ligne où PS = 0 avec FS de J-1 de la dernier PS de la journée en question/
Je ne sais pas si je me suis bien exprimer.
PS: Dans la même journée calendrier peux avoir uniquement 2 PS et 2 FS ou 1 FS et l'autre FS J+1

Merci pour votre aide
 
Solution
Re-,
Oups, pour le calcul de l'amplitude, il ne faut pas additionner time, mais number.from(time...)
PowerQuery:
= Table.ReplaceValue(CalculHeureFin,each [AMPLITUDE],each [AMPLITUDE]+[T_.AMPLITUDE] + Number.From(#time(0,1,0)),Replacer.ReplaceValue,{"AMPLITUDE"})

C'est pour rajouter la minute qui manque, entre 23:59:00 et 00:00:00

Dans le fichier que j'ai joint, j'ai volontairement filtré les lignes comportant 23:59:00, afin de bien voir les calculs.
On aurait pu le faire avec l'entièreté du tableau, mais cela aurait été bien moins visible.
Donc, pour la date de fin, lorsqu'il y a 23:59:00 en FS, on remplace la date de fin par la date de la colonne T_.DATE FS
Je suppose que dans ton tableau réel, tu as plus de colonnes...
Je t'avais demandé de les intégrer...

Cousinhub

XLDnaute Barbatruc
Re-,
Un premier jet.
J'ai juste modifié le tableau synthèse sans toucher à l'onglet A.
J'ai aussi rajouté une date bidon afin d'avoir au moins 2 cas à traiter
Je ne sais pas s'il fallait additionner les valeurs des 3 dernières colonnes (MAD, DE et REPOS), mais si tu appliques les mêmes règles de calcul, tu devrais pouvoir le faire.
Par contre, à l'avenir, je vais te demander de faire un gros effort en orthographe et grammaire, car lire à voix haute réveille mes voisins... Il existe des correcteurs...
Bon apm
 

Pièces jointes

  • Copier_coller_extractionlogiciel.xlsm
    47.4 KB · Affichages: 3

nunizgb

XLDnaute Junior
Merci

Et encore désole pour l’orthographe et la grammaire c'est dû à cause de mon téléphone.

J'ai regarde vite fait sur mon téléphone, je vais regarde le plus profond comment tu est arriver à ce résultat.

Cela bien calcule par exemple pour la journée du 5/6/22 quand il y a 2 prises de services ce jour là et qu'une fin de service est lendemain. Cela bien calcul les temps de Service, TTE conduite etc.. comme il faut à savoir :
par exemple pour Conduite 2:17 (5/6/22) + 0:50 (6/6/22)= 3:07

Par contre en ce qui concerne l'amplitude, cela ne prend que l'amplitude 23:59-19:55=4:04 au lieu de (23:59+2:10)-19:55=6:04

Merci beaucoup pour la solution pour les autres calculs mais en ce qui concerne l’amplitude, j'ai vu que la formule n'était pas la même.
Exemple pour calcul heures conduite c'est :
Table.ReplaceValue(CalculTTE,each [CONDUITE],each [CONDUITE]+[T_.CONDUITE],Replacer.ReplaceValue,{"CONDUITE"})
Alors que pour amplitude c'est :
= Table.ReplaceValue(CalculHeureFin,each [AMPLITUDE],each [AMPLITUDE]+[T_.AMPLITUDE] +#time(0,1,0),Replacer.ReplaceValue,{"AMPLITUDE"})
Donc j'ai supprimé +#time(0,1,0) et j'ai bien 6:14 au lieu de 4:04 par contre est-ce que cela vas change pour les autres lignes faut que je vérifie. A quoi correspond ce +#time(0,1,0) ?
Puis peux tu me dire si j'ai bien compris cette formule, merci beaucoup :

= Table.ReplaceValue(#"Type modifié1",each [DATE FS], each [T_.DATE FS],Replacer.ReplaceValue,{"DATE FS"})

Donc après ajoute deux colonne index et après la fusion de ces deux colonne on obtient des colonnes T_....
puis cette formule remplace les valeurs de la colonne DATE FS par des valeurs de la colonne T_Date FS) ?

Puis comment cela vas être intégrer dans mon fichier final.
Mais merci beaucoup pour la solution, je vais tester cela d'ici ce soir sur mon fichier réel.

Encore une fois merci beaucoup
 

Cousinhub

XLDnaute Barbatruc
Re-,
Oups, pour le calcul de l'amplitude, il ne faut pas additionner time, mais number.from(time...)
PowerQuery:
= Table.ReplaceValue(CalculHeureFin,each [AMPLITUDE],each [AMPLITUDE]+[T_.AMPLITUDE] + Number.From(#time(0,1,0)),Replacer.ReplaceValue,{"AMPLITUDE"})

C'est pour rajouter la minute qui manque, entre 23:59:00 et 00:00:00

Dans le fichier que j'ai joint, j'ai volontairement filtré les lignes comportant 23:59:00, afin de bien voir les calculs.
On aurait pu le faire avec l'entièreté du tableau, mais cela aurait été bien moins visible.
Donc, pour la date de fin, lorsqu'il y a 23:59:00 en FS, on remplace la date de fin par la date de la colonne T_.DATE FS
Je suppose que dans ton tableau réel, tu as plus de colonnes...
Je t'avais demandé de les intégrer dans l'exemple (même sans données), voire en changeant légèrement les noms de colonnes.
Si tu n'arrives pas à intégrer ce code dans ton fichier réel, reviens
Bon courage
 

nunizgb

XLDnaute Junior
Merci beaucoup Cousinhub

Je vient d’intégrer tes formule power query dans mon fichier réel et cela marche et j'ai même ajouter la somme pour MAD et DE et donc j'ai bien par exemple pour la journée du 6.6.22 où il y avait une fin de service à 2:10 et plus rien à savoir 0:00 et donc avec mfc j'obtient ce que je veux.

Encore une fois merci Cousinhub pour la solution power query en ce qui concerne la somme avec des conditions
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re-,
Pour marquer "Résolu", il faut que tu cliques sur le symbole v dans le post ayant solutionné le problème
1700245843681.png

Pour le reste, je vais juste te dire que je ne l'ai pas lu....
Lorsqu'on expose un souci, on essaie de rester concis...
Un fichier exemple, ce qu'on a, ce qu'on espère avoir
Donc, tu peux ouvrir un autre fil, en posant ta question calmement, et en soignant le visuel
Lire plein de lignes à la suite, sans pratiquement pas de ponctuation, et truffées de fautes d'orthographe, ça ne donne pas envie d'aller plus avant.
Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin