Toutes mes réponses sur les forums
-
AuteurMessages
-
18 février 2023 à 12 h 16 min en réponse à : Calcul de date entre dernier jour travaillé et premir jour de reprise travail #125762
Daniel
ParticipantBonjour konanothnielr, le Forum,
Sur base du fichier joint dans ton dernier post, je te propose la solution suivante. Il faudra éventuellement reformater la colonne Ecart.
Je suis également parti du postulat que les lignes vides au niveau des dates n’étaient pas très utiles pour le calcul (postulat à revoir car cela élimine des keyEmploye de la requête).
C’est en tout cas la méthode que j’utilise afin de récupérer la ligne située immédiatement au-dessus.
En espérant avoir répondu à la demande ou tout au moins t’avoir fourni des pistes en vue de sa résolution.
Cordialement
DanielRequête Power Query
let
Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“keyEmploye”, Int64.Type}, {“HeureDebut_CDP”, type datetime}, {“HeureFin_CDP”, type datetime}}),
FiltreLignesDateDebNulles = Table.SelectRows(ModificationTypeDonnees, each ([HeureDebut_CDP] <> null)),
GrouperSurkeyEmploye = Table.Group(FiltreLignesDateDebNulles, {“keyEmploye”}, {{“FullTable”, each _, type table [keyEmploye=nullable number, HeureDebut_CDP=nullable datetime, HeureFin_CDP=nullable datetime]}}),
AjoutColonneIndex = Table.TransformColumns(GrouperSurkeyEmploye,{{“FullTable”, each Table.AddIndexColumn(_,”Index”,0,1)}}),
AddColumnPrevValue = Table.AddColumn(AjoutColonneIndex, “CalculPrevValue”, each let
AllDataTable = [FullTable],
PrevRowValue = Table.AddColumn(
AllDataTable,”PrevValue”,
each try AllDataTable [HeureFin_CDP] {[Index]-1} otherwise null)
in PrevRowValue),
ListeofSingleTables = Table.Combine( AddColumnPrevValue[CalculPrevValue],{“keyEmploye”,”HeureDebut_CDP”,”HeureFin_CDP”,”PrevValue”}),
CalculEcart = Table.AddColumn(ListeofSingleTables, “Ecart”, each [HeureDebut_CDP]-[PrevValue], type duration),
SuppressionColonnePrevValue = Table.RemoveColumns(CalculEcart,{“PrevValue”})
in
SuppressionColonnePrevValueAttachments:
You must be logged in to view attached files.17 février 2023 à 19 h 38 min en réponse à : Calcul de date entre dernier jour travaillé et premir jour de reprise travail #125753Daniel
ParticipantBonjour konanothnielr, le Forum,
Est-ce que ce sont les deux seules données devant servir de base au calcul ?
Si c’est un temps machine, elle est surement référencée, si c’est un humain alors il a surement un matricule.
Plus de précisions me paraissent nécessaire afin de répondre au plus près de ton besoin.
Cordialement
DanielDaniel
ParticipantBonjour hboisteau, le Forum,
Dans l’exemple donné, les heures sont bien toutes les trente minutes mais sur des jours différents, donc en prenant la date et l’heure on peut obtenir le résultat escompté (seul problème pour obtenir exactement ce résultat, j’ai du gardé la colonne Date).
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“Date”, type datetime}, {“N°Mas”, Int64.Type}, {“Valeur”, Int64.Type}}),
GroupLignesNMas = Table.Group(#”Type modifié”, {“N°Mas”}, {{“FullTable”, each _, type table [Date=nullable datetime, #”N°Mas”=nullable number, Valeur=nullable number]}}),
IndexFullTable = Table.TransformColumns(GroupLignesNMas,{{“FullTable”, each Table.AddIndexColumn(_,”Index”,0,1)}}),
AddColumnNextValue = Table.AddColumn(IndexFullTable, “CalculNextValue”, each let
AllDataTable = [FullTable],
NextRowValue = Table.AddColumn(
AllDataTable,”NextValue”,
each try AllDataTable [Valeur] {[Index]+1} otherwise null)
in NextRowValue),
ListeofSingleTables = Table.Combine( AddColumnNextValue[CalculNextValue],{“Date”,”N°Mas”,”Valeur”,”NextValue”}),
CalculEcart = Table.AddColumn(ListeofSingleTables, “Ecart”, each [NextValue]-[Valeur]),
TriDesLignesNMasEtDates = Table.Sort(CalculEcart,{{“Date”, Order.Ascending},{“N°Mas”, Order.Ascending}}),
SuppressionColonnes = Table.RemoveColumns(CalculEcart,{“NextValue”}),
FiltreLignesNulles = Table.SelectRows(SuppressionColonnes, each ([Ecart] <> null))in
FiltreLignesNullesCi-joint le fichier avec la requête ci-dessus.
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour vincendon.fa, le Forum,
Si il est possible de modifier la requête, alors je propose de dépivoter les colonnes contenant les questions afin d’avoir une colonne Questions et une autre Conformité. Pour ce faire, sélectionner les colonnes ne contenant pas les questions et leurs réponses, et choisir dans Transformer, dépivoter les autres colonnes. On obtiendras les colonnes décrivant les données, plus une colonne Attribut (à renommer en Questions) et une autre colonne nommée Valeur (à renommer en Conformité), charger les données dans le modèle et nous pouvons maintenant créer une mesure permettant de calculer le pourcentage.
Exemple de la requête basée sur le tabQuestionnaire_1 qui doit se rapprocher de vos données de base, si je ne me suis pas trompé.
let
Source = Excel.Workbook(File.Contents(“C:\Users\Daniel\OneDrive\Documents\Forums\CFO Masqué\vincendonfa.xlsx”), null, true),
tabQuestionnaire_1_Table = Source{[Item=”tabQuestionnaire_1″,Kind=”Table”]}[Data],
#”Supprimer le tableau croisé dynamique des autres colonnes” = Table.UnpivotOtherColumns(tabQuestionnaire_1_Table, {“Société”}, “Attribut”, “Valeur”),
#”Colonnes renommées” = Table.RenameColumns(#”Supprimer le tableau croisé dynamique des autres colonnes”,{{“Attribut”, “Questions”}, {“Valeur”, “Conformité”}})
in
#”Colonnes renommées”
Mesure pour calcul du pourcentage
Pct_Conformité_1 =
VAR __Conforme = CALCULATE(countrows(tabQuestionnaire_1),tabQuestionnaire_1[Conformité]=”Conforme”)
VAR __NonConforme = CALCULATE(countrows(tabQuestionnaire_1),tabQuestionnaire_1[Conformité]=”Non Conforme”)
RETURN
DIVIDE(__Conforme,(__Conforme+__NonConforme))D’autres solutions sont certainement possibles, mais cela peut vous donner des pistes de réflexion afin de résoudre le problème posé.
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour Sapeur1, le Forum,
Une autre solution qui donne le résultat escompté (voir fichier ci-joint)
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour hboisteau, le Forum,
Et en essayant comme ceci, cela devrait te donner le résultat recherché ou tout au moins s’en approcher d’assez près.let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
ModificationTypeData = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
TriDesLignes = Table.Sort(ModificationTypeData,{{“type”, Order.Ascending}, {“Date”, Order.Ascending}}),
GroupSurType = Table.Group(TriDesLignes, {“type”}, {{“FullTable”, each _, type table [Date=nullable date, type=nullable text, valeur=nullable number]}}),
IndexFullTable = Table.TransformColumns(GroupSurType,{{“FullTable”, each Table.AddIndexColumn(_,”Index”,0,1)}}),
AddColumnForPrevValue = Table.AddColumn(IndexFullTable, “CalculPrevValue”, each let
AllDataTable = [FullTable],
PrevRowValue = Table.AddColumn(
AllDataTable,”PrevValue”,
each try AllDataTable [valeur] {[Index]-1} otherwise null)
in PrevRowValue),
ListeofSingleTables = Table.Combine( AddColumnForPrevValue[CalculPrevValue],{“Date”,”type”,”valeur”,”PrevValue”}),
CalculEcart = Table.AddColumn(ListeofSingleTables, “Ecart”, each [valeur]-[PrevValue]),
SuppressionColonnes = Table.RemoveColumns(CalculEcart,{“PrevValue”})
in
SuppressionColonnes
En espérant avoir pu t’aider ou te donner des pistes de réflexions
Cordialement
Daniel31 décembre 2022 à 17 h 49 min en réponse à : résultat d’aujourd’hui moins le résultat d’hier #124359Daniel
ParticipantBonjour hboisteau,le Forum,
Avec Power query, je ferais comme cela par rapport au jeu que tu as posté
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
#”Lignes groupées” = Table.Group(#”Type modifié”, {“type”}, {{“AllRows”, each _, type table [#”Date”=nullable date, #”type”=nullable text, valeur=nullable number]}}),
#”Personnalisée ajoutée2″ = Table.AddColumn(#”Lignes groupées”, “MesDonnées”, each Table.Sort([AllRows],{“Date”, Order.Ascending})),
#”Personnalisée ajoutée” = Table.AddColumn(#”Personnalisée ajoutée2″, “Valeurs”, each List.Last([MesDonnées][valeur])-List.First([MesDonnées][valeur])),
#”Personnalisée ajoutée1″ = Table.AddColumn(#”Personnalisée ajoutée”, “Dates”, each List.Last([MesDonnées][Date])),
#”Colonnes supprimées” = Table.RemoveColumns(#”Personnalisée ajoutée1″,{“AllRows”,”MesDonnées”}),
#”Colonnes permutées” = Table.ReorderColumns(#”Colonnes supprimées”,{“Dates”, “type”, “Valeurs”})
in
#”Colonnes permutées”
D’autres solutions sont certainement possibles.
Bonne année
Cordialement
DanielDaniel
ParticipantBonjour Hboisteau, le Forum,
1 – menu ‘Ajouter une colonne’
2 – choisir ‘colonne conditionnelle’
3 – dans ‘nom de colonne’ choisir ‘Date fin de config’
dans Opérateur choisir ‘Différent de’
dans Valeur taper null
dans Sortie taper Non Active et dans Autre taper Active
Cela devrait donner le résultat attendu comme l’as expliqué Christian.
Cordialement et bonnes fêtes de Noël
DanielAttachments:
You must be logged in to view attached files.19 décembre 2022 à 10 h 55 min en réponse à : Regroupement tables démultiplication des données #124002Daniel
ParticipantBonjour foxleman, le Forum,
1 – Charger les deux tables Dates et Articles dans Power Query
2 – Choisir (par exemple la table Articles), puis ajouter une colonne personnalisée et indiquer le nom de la table Dates
3 – Développer la colonne que l’on vient de créer en décochant la case “Utiliser le nom de la colonne d’origine comme préfixe”
4 – Éventuellement réordonner les colonnes et changer les types de données.Exemple : tblDates
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“Date”, type date}})
in
#”Type modifié”
Exemple : tblArticles
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau3″]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“article”, type text}}),
#”Personnalisée ajoutée” = Table.AddColumn(#”Type modifié”, “Personnalisé”, each tblDates),
#”Personnalisé développé” = Table.ExpandTableColumn(#”Personnalisée ajoutée”, “Personnalisé”, {“Date”}, {“Date”})
in
#”Personnalisé développé”D’autres solutions sont certainement possibles, en espérant avoir pu vous aider
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour Christine, Dominique, le Forum,
Peut-être que cette vidéo Youtube répondra à votre attente.
ou celle-ci
Cordialement
DanielDaniel
ParticipantBonjour k.musseleck, le Forum,
En premier lieu, tu créer les deux étapes comme tu l’as fait (une première source et une seconde navigation)
Ensuite, il faut créer d’autres étapes comme suit :
1 – Sélectionner la colonne Prod Order No, puis aller dans le menu Accueil, choisir Regrouper par et dans la boite de dialogue, nommer la colonne AllRows (par exemple), et choisir comme Opération Toutes les lignes, cliquez sur OK pour valider.
2 – Aller dans le menu Ajouter une colonne, cliquez sur colonne personnalisée et dans la boite de dialogue, donnez comme nom de colonne “Nom Client” et tapez ou copiez ce qui suit dans la partie Formule:
Table.SelectRows(
[AllRows],
(TableNosDonnees) => TableNosDonnees[Line_type] = “Entête production”)[NomClient]
En cliquant dans la partie blanche de la première ligne, vous verrez le résultat de la fonction ci-dessus.
3 – Cliquez sur les deux flèches situées à droite du nom de la colonne (Nom Client) pour développer les données de cette colonne.
4 – Cliquez sur les deux flèches situées à droite du nom de la colonne (AllRows) pour développer les données de cette colonne. Désélectionner les cases Prod_Order no et NomClient sans oublier de décocher la case Utiliser le nom de la colonne d’origine comme préfixe.
5 – Vous devriez obtenir le résultat souhaité.
En espérant vous avoir aidé à résoudre votre problème
Cordialement
DanielDaniel
ParticipantBonjour k.musseleck, le Forum,
Oui, il faut créer ta requête dans Power Query. Tu peux t’inspirer des étapes que je t’ai montré, mais avec des adaptations sur la source de données (dans mon exemple c’est Tableau3, tableau structuré dans Excel, ce peut être un nom différent dans ton cas voir un autre type de source comme un fichier CSV ou une base SQL), les colonnes sont celles repris dans ton exemple (en espérant que je les ai orthographiées comme toi, à vérifier). En prenant en compte ces différentes remarques, cela devrait fonctionner comme dans l’exemple fourni dans le fichier excel.
Cordialement
DanielDaniel
ParticipantBonjour k.musseleck, le Forum,
Si ton dernier message correspond à mon dernier envoi, il faut écrire la requête dans Power query sous Power BI. Cela permet de créer la table que tu utiliseras dans Power BI avec des visuels.
Cordialement
DanielDaniel
ParticipantBonjour k.musseleck, le Forum,
Juste oublié de joindre le fichier excel contenant les deux requêtes, désolé.
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour k.musseleck, le Forum,
OK, mais dans l’exemple donné, je vois des lignes Ecriture capacité sans client et c’est celles qui doivent être remplies avec les données Client de Ecriture production si j’ai bien compris.
Ma 1ère approche fonctionne et donne le résultat voulu (voir requête ci-dessous) et dans fichier excel (requête Data)
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau3″]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“EntryNo”, Int64.Type}, {“Line_type”, type text}, {“Prod_Order No”, Int64.Type}, {“Item_No”, type text}, {“Statut”, type number}, {“NomClient”, type text}, {“NoCommande”, type text}}),
#”Lignes triées” = Table.Sort(#”Type modifié”,{{“Prod_Order No”, Order.Ascending}, {“Line_type”, Order.Descending}}),
#”Rempli vers le bas” = Table.FillDown(#”Lignes triées”,{“NomClient”})
in
#”Rempli vers le bas”
Autrement, via une autre approche mais plus d’étapes, voir requête ci-dessous
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau3″]}[Content],
GroupAllRows = Table.Group(Source, {“Prod_Order No”}, {{“AllRows”, each _, type table [EntryNo=number, Line_type=text, Prod_Order No=number, Item_No=text, Statut=nullable number, NomClient=nullable text, NoCommande=nullable text]}}),
SelectionEcrituresProduction = Table.AddColumn(GroupAllRows, “Personnalisé”, each Table.SelectRows(
[AllRows],
(TableNosDonnees) => TableNosDonnees[Line_type] = “Entête production”)[NomClient]),
DevelopperListeEcritureProduction = Table.ExpandListColumn(SelectionEcrituresProduction, “Personnalisé”),
DevelopperAllRows = Table.ExpandTableColumn(DevelopperListeEcritureProduction, “AllRows”, {“EntryNo”, “Line_type”, “Item_No”, “Statut”, “NoCommande”}, {“EntryNo”, “Line_type”, “Item_No”, “Statut”, “NoCommande”}),
ColonneNomClient = Table.RenameColumns(DevelopperAllRows,{{“Personnalisé”, “Nom Client”}})
in
ColonneNomClient
Il est possible que d’autres solutions existent mais je n’en vois pas d’autres pour l’instant. Si cela est conforme au résultat souhaité, merci de le faire savoir et que cela réglera ton problème.
Cordialement
Daniel -
AuteurMessages