Accueil – Le CFO masqué › Forums › Power BI › Projection mensuelle d’une valeur entre 2 dates dans une matrice
- Ce sujet contient 1 réponse, 2 participants et a été mis à jour pour la dernière fois par Stéphane Lorin, le il y a 3 années et 4 mois.
-
AuteurArticles
-
19 avril 2021 à 14 h 11 min #89732STEPHANE PLANETParticipant
Bonjour,
Pour chaque projet, je dispose d’une date de début et d’une date de fin
Plusieurs acteurs vont etre affectés au projet en unité Homme/moisJe dois construire une matrice tableau dans PBI avec :
Tous les mois de l’année (vide ou non vide)
le nombre Homme/mois dans chaque mois compris entre la date de début et de fin de projetMerci beaucoup pour vos idées et solutions
Vous trouverez ci-joint :
le fichier PBI avec quelques tests
le fichier source Excel avec dans le feuille une la matrice attendu dans PBI- Ce sujet a été modifié le il y a 3 années et 5 mois par STEPHANE PLANET. Raison: pas mis l'abonnement
- Ce sujet a été modifié le il y a 3 années et 5 mois par STEPHANE PLANET.
Attachments:
You must be logged in to view attached files.27 avril 2021 à 10 h 56 min #89950Stéphane LorinParticipantBonjour
Je vous propose un code Power Query qui transforme votre tableau de départ en votre “résultat attendu”
Le principe est d’ajouter une liste de 0 à n avec n le nombre de mois d’écart entre le début et la fin.
Comme il n’y a pas de fonction de différence de mois, j’utilise la différence de jours Duration.Days divisée par 30 et j’ajoute 1 par sécurité (pour gérer les arrondis et les mois qui ne font pas 30 jours), j’ajoute Number.IntergerDivide pour arrondir à l’entierLa liste est donc obtenue via
{0..Number.IntegerDivide(Duration.Days([Date prévi fin] – [Date prévi début]),30)+1}Ensuite je développe la liste en ligne et j’utilise la fonction Date.AddMonths
En dernière étape je filtre sur les dates périodes supérieures à la date de fin.Code sous Excel à adapter à PBI
let
Source = Excel.CurrentWorkbook(){[Name=”TblProjets”]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“Projet”, type text}, {“Date prévi début”, type date}, {“Date prévi fin”, type date}, {“Direction”, type number}, {“Chef de projet”, type number}}),
Liste = Table.AddColumn(#”Type modifié”, “Liste Ajout Mois”, each {0..Number.IntegerDivide(Duration.Days([Date prévi fin] – [Date prévi début]),30)+1}),
#”Liste Ajout Mois développé” = Table.ExpandListColumn(Liste, “Liste Ajout Mois”),
#”Personnalisée ajoutée” = Table.AddColumn(#”Liste Ajout Mois développé”, “Date période”, each Date.AddMonths([Date prévi début],[Liste Ajout Mois]), type date),
#”Lignes filtrées” = Table.SelectRows(#”Personnalisée ajoutée”, each [Date période] <= [Date prévi fin]),
#”Autres colonnes supprimées” = Table.SelectColumns(#”Lignes filtrées”,{“Projet”, “Date période”, “Direction”, “Chef de projet”})
in
#”Autres colonnes supprimées”Cordialement
Stéphane
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.