Bonjour à tous,
J'avais commencé à bosser hier soir sur ce sujet, du coup je me permets de proposer ma version TCD + PowerQuery.
Plusieurs avantages :
- Somme par date et par employé + somme globale
- Départements des employés intégrés
- Si aucun employé a bossé un jour, ce jour s'affichera quand même au niveau du TCD
J'imagine que tu extraits les données chaque moi : Il faut aller changer chaque mois cette ligne de code dans PowerQuery (que je n'ai pas rendu variable) :
List.Dates(#date(2024, 7, 01), 31, #duration(1, 0, 0, 0)
Mais je te laisse déjà découvrir le simple TCD...
let
Source = Excel.CurrentWorkbook(){[Name="Pointage"]}[Content],
#"Type modifié" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
GroupBy = Table.Group(#"Type modifié", {"First Name", "Employee ID"}, {{"Tbl", each _, type table [Employee ID=text, First Name=text, Department=text, Date=nullable date, Weekday=text, First Punch=text, Last Punch=text, Total Time=number]}}),
AjtListDates = Table.AddColumn(GroupBy, "ListDates", each List.Dates(#date(2024, 7, 01), 31, #duration(1, 0, 0, 0))),
ListDatesDvlp = Table.ExpandListColumn(AjtListDates, "ListDates"),
#"Tbl développé" = Table.ExpandTableColumn(ListDatesDvlp, "Tbl", {"Date", "Total Time"}, {"Date", "Total Time"}),
ChoixDates = Table.AddColumn(#"Tbl développé", "ChoixDates", each if [Date] = [ListDates] then [Total Time] else null),
GroupBy2 = Table.Group(ChoixDates, {"ListDates", "First Name", "Employee ID"}, {{"Nombre", each Number.Round(List.Sum([ChoixDates])/60,3), type nullable number}}),
ValRemp = Table.ReplaceValue(GroupBy2,null,0,Replacer.ReplaceValue,{"Nombre"}),
#"Requêtes fusionnées" = Table.NestedJoin(ValRemp, {"First Name"}, BaseDep, {"Nom"}, "BaseDep", JoinKind.LeftOuter),
#"BaseDep développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "BaseDep", {"Departement"}, {"Departement"})
in
#"BaseDep développé"