Toutes mes réponses sur les forums

15 sujets de 46 à 60 (sur un total de 143)
  • Auteur
    Messages
  • en réponse à : Comparaison d’un agent avec la moyenne des autres #135555
    Xavier Allart
    Participant

    Bonjour

    voici une proposition

    en power query
    Sélectionner les colonnes année et mois
    Dépivoter les autres colonnes
    ajouter une colonne date (1er jour du mois) si vous voulez

    PAsser en Power BI
    ajouter la mesure suivante :
    Autres =
    VAR AgentX = ALLSELECTED(‘Table'[Agent])
    Return
    CALCULATE(AVERAGE(‘Table'[Valeur]), NOT ‘Table'[Agent] IN AgentX)

    Pour tester j’ai réalisé les vusiels en 2 zones indépendantes au niveau du filtre dans les segments
    Pour la zone bleue on selectionne l’agent que l’on désire comparer aux autres
    Pour la zone verte on selectionne les autres. elle ne sert que de tests on pourra la supprimer

    cordialement

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Répartir le montant des factures trimestrielles sur 3 mois #135552
    Xavier Allart
    Participant

    Bonjour

    Je vous propose cette solution
    création d’une nouvelle table par réference à la table LigneFacture
    la fusionner avec la table EnteteFacture sur le champ IDFacture
    developper la colonne DateFacture
    la fusionner avec la table Commandes sur le champ IDcommande
    developper la colonne Periodicite
    J’ai supprimmer les lignes dont le montant est de 0 ou la periodicite est de 0
    dans une nouvelle colonne calculer le montant par période
    [#” MontantHT “]/[Periodicite]

    ajouter une colonne pour généner une liste des dates (1 par mois selon la périodicité)
    = Table.AddColumn(#”Personnalisée ajoutée”, “List.Dates”, each List.Transform({0..[Periodicite]-1}, (x) =>
    Date.AddMonths(Date.StartOfMonth([DateFacture]), x)
    ))

    Developper la liste sur plusieures lignes

    conserver seulement les colonnes “IDLigne”, “Montant/Période”, “List.Dates”

    Cordialement

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Colonne Date PBI #135477
    Xavier Allart
    Participant

    Bonjour

    Il faut dépivoter les colonnes mois en ligne, ajouter une colonne Date, à partir des colonnes Année et Mois, j’ai choisi le 1er jour du mois. Une ligne se transforme en 12 lignes
    Index, Annee, Mois, valeur, Date

    let
    // Étape 1: Extraction des données
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“…”)), Compression.Deflate)),

    // Étape 2: Modification des types de colonnes
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“ANNEE”, Int64.Type}, {“Janvier”, type number}, {“Février”, type number}, {“Mars”, type number}, {“Avril”, type number}, {“Mai”, type number}, {“Juin”, type number}, {“Juillet”, type number}, {“Août”, type number}, {“Septembre”, type number}, {“Octobre”, type number}, {“Novembre”, type number}, {“Décembre”, type number}}),

    // Étape 3: Ajout d’une colonne d’index (pour identifier les 12 mois d’une ligne, si necessiare)
    #”Index ajouté” = Table.AddIndexColumn(#”Type modifié”, “Index”, 1, 1, Int64.Type),

    // Étape 4: Réorganiser les colonnes, pour déplacer Index en 1er
    #”Colonnes permutées” = Table.ReorderColumns(#”Index ajouté”,{“Index”, “ANNEE”, “Janvier”, “Février”, “Mars”, “Avril”, “Mai”, “Juin”, “Juillet”, “Août”, “Septembre”, “Octobre”, “Novembre”, “Décembre”}),

    // Étape 5: Sélectioner les 12 colonnes Mois, dépivotage des colonnes
    #”Tableau croisé dynamique des colonnes supprimé” = Table.UnpivotOtherColumns(#”Colonnes permutées”, {“Index”, “ANNEE”}, “Attribut”, “Valeur”),

    // Étape 6: Renommage de la colonne pivotée Attribut en Mois
    #”Colonnes renommées” = Table.RenameColumns(#”Tableau croisé dynamique des colonnes supprimé”,{{“Attribut”, “MOIS”}}),

    // Étape 7: Ajout d’une colonne de date composé de 01 MOIS ANNEE
    #”Colonne fusionnée insérée” = Table.AddColumn(#”Colonnes renommées”, “Date”, each Text.Combine({“01 “, [MOIS], ” “, Text.From([ANNEE], “fr-FR”)}), type text),

    // Étape 8: Modification du type de la colonne “Date”
    #”Type modifié1″ = Table.TransformColumnTypes(#”Colonne fusionnée insérée”,{{“Date”, type date}})
    in
    #”Type modifié1″

    Cordialement

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Colonne Date PBI #135459
    Xavier Allart
    Participant

    Bonjour

    Pouvez vous joindre une version simplifiée de votre table au format excel.
    Quand vous ecrivez “une colonne “année” et mes mois sont disposés en colonnes, ces deux deux colonnes sont en format texte” Faut-il comprendre qu’il s’agit de nombre au format texte, ou bien ecrit en toutes lettres.
    pour les mois : 01, 1, Janv, Janvier, …
    pour les année : 23, Z023, Deux mille vingt-trois, …..

    cordialement

    en réponse à : Répartir le montant des factures trimestrielles sur 3 mois #135458
    Xavier Allart
    Participant

    Bonjour

    Pour vous aider, merci d’envoyer le power bi simplifié ou les tables simplifiées au format Excel. Merci

    cordialement

    en réponse à : Index equiv entre 2 dates #135320
    Xavier Allart
    Participant

    Bonjour

    voici une solution, avec la fonction RECHERCHEX
    Ajouter une colonne avec la valeur “JF” dans la table des jours fériés
    Ajouter 2 colonnes dans la liste des absences :
    id = Matricule & Date
    “abs”

    Voici la formule à copier/coller (ne pas l’incrementer à cause des références structurées)
    =RECHERCHEX(C$2;Fériés!$B$6:$B$17;Fériés!$C$6:$C$17;SI(C$3>=6;”WE”;RECHERCHEX($B24&”-“&TEXTE(C$2;”AAAAMMJJ”);ListeDates[iD];ListeDates[Abs];””;0));0)

    Il s’agit de 3 fonctions imbriquées les unes dans les autres
    =RECHERCHEX(C$2;Fériés!$B$6:$B$17;Fériés!$C$6:$C$17;”fonction imbriquée”;0)
    SI(C$3>=6;”WE”;”fonction imbriquée”)
    RECHERCHEX($B24&”-“&TEXTE(C$2;”AAAAMMJJ”);ListeDates[iD];ListeDates[Abs];””;0)
    dans cette derniere on peut remplacer “” par C43

    Cordialement

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Nouvelle mesure de date pour débutant #135303
    Xavier Allart
    Participant

    Bonjour

    Sans plus de données, il semblerait qu’il y ai une confusion entre colonne calculée et mesure
    Je vous propose 2 liens pour en savoir plus :

    Power Pivot : Colonnes vs mesures en DAX


    https://learn.microsoft.com/fr-fr/dax/best-practices/dax-column-measure-references

    Cordialement.

    en réponse à : Index equiv entre 2 dates #135304
    Xavier Allart
    Participant

    Bonjour

    Une solution consite à créer depuis la table des absences une table de liste de dates automatique

    Il faudra bien penser à actualiser les données à chaque changement dans la table des absences

    Cordialement

    en réponse à : Calculs basés sur 2 tables de temps #135282
    Xavier Allart
    Participant

    Bonjour

    Sans connaitre la structure de vos tables.
    Je pense qu’il faudrait un seul calendrier avec les colonnes Date.Calendaire et la Date.Fiscale correspondante. A voir en fonction des calculs dont vous avez besoin, La Date.Fiscale pourrait etre la date du lundi, du 1er du mois, etc
    Dans l’exemple suivant
    Date.Calendaire Année Mois Lundi ficale Année & Mois Fiscale
    mercredi 1 janvier 2020 2020 1 lundi 30 décembre 2019 2019 12
    samedi 1 février 2020 2020 2 lundi 27 janvier 2020 2020 1
    dimanche 1 mars 2020 2020 3 lundi 24 février 2020 2020 2
    mercredi 1 avril 2020 2020 4 lundi 30 mars 2020 2020 3
    vendredi 1 mai 2020 2020 5 lundi 27 avril 2020 2020 4
    lundi 1 juin 2020 2020 6 lundi 1 juin 2020 2020 6
    mercredi 1 juillet 2020 2020 7 lundi 29 juin 2020 2020 6
    samedi 1 août 2020 2020 8 lundi 27 juillet 2020 2020 7
    mardi 1 septembre 2020 2020 9 lundi 31 août 2020 2020 8
    jeudi 1 octobre 2020 2020 10 lundi 28 septembre 2020 2020 9
    dimanche 1 novembre 20202020 11 lundi 26 octobre 2020 2020 10
    mardi 1 décembre 2020 2020 12 lundi 30 novembre 2020 2020 11

    Pour la colonne Lundi, j’ai utilsé la formule power query suivante
    Date.AddDays([date],-Date.DayOfWeek([date],Day.Monday)))

    Cordialement

    en réponse à : Index equiv entre 2 dates #135281
    Xavier Allart
    Participant

    Bonjour

    Je pense qu’il manque le fichier en piece jointe.

    Cordialement

    en réponse à : Répartir une durée en plusieurs lignes #135190
    Xavier Allart
    Participant

    Bonjour

    Power Query pour Excel et Power BI, c’est identique.
    Pour la table soit vous l’enregistrer dans un classeur Excel, ou un Fichier csv et l’importé dans votre modele Power BI, soit directement la créer dans Power BI : Accueil > Créer une table, copier/coller depuis Excel, nommer la table et la charger.

    Cordialement

    en réponse à : Répartir une durée en plusieurs lignes #135136
    Xavier Allart
    Participant

    bonjour
    voici une propositon
    J’ai ajouter une table pour avoir par Shift (Type) les heures de Début et de Fin de chaque.
    Dans cette table j’ai découpé la nuit en 2
    Type H_Début H_Fin
    1.Soir 00:00 05:00
    2.Matin 05:00 13:00
    3.Apres-Midi 13:00 21:00
    4.Soir 21:00 23:59

    Le code
    ajoute un N° d’index a chaque action
    decompose chaque action en autant de lignes qu’il y a de tranches horaires
    Associe à chaque tranche horaire le shift (Type) correspondant
    Regroupe les actions, par date et shift, pour calculer le TR correspondant

    let
    // Étape 1 : Charger les données depuis la feuille Excel appelée “Donnée”
    Source = Excel.CurrentWorkbook(){[Name=”Donnée”]}[Content],

    // Étape 2 : Modifier le type de colonne pour les colonnes “Début” et “Fin” en type datetime
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“Début”, type datetime}, {“Fin”, type datetime}}),

    // Étape 3 : Ajouter une colonne d’index “Id”, pour identifier chaque action
    #”Id ajouté” = Table.AddIndexColumn(#”Type modifié”, “Id”, 1, 1, Int64.Type),

    // Décomposer une action, en autant de lignes qu’elle a de tranches horaires
    // Étape 4 : Calcul la durée entre “Début” et “Fin”
    #”DaysHours ajoutée” = Table.AddColumn(#”Id ajouté”, “Nb.TranchesHoraires”, each Duration.ToRecord([Fin]-[Début])),

    // Étape 5 : Étendre la colonne de durée en colonnes distinctes “Days” et “Hours”
    #”Nb.tranchesHoraires développé” = Table.ExpandRecordColumn(#”DaysHours ajoutée”, “Nb.TranchesHoraires”, {“Days”, “Hours”}, {“Days”, “Hours”}),

    // Étape 6 : Calculer le nombre total d’heures en ajoutant les jours convertis en heures et les heures
    Nb.TranchesHoraires = Table.AddColumn(#”Nb.tranchesHoraires développé”, “Nb.TranchesHoraires”, each [Days]*24+[Hours]),

    // Étape 7 : Supprimer les colonnes inutiles
    #”Colonnes supprimées” = Table.RemoveColumns(Nb.TranchesHoraires,{“Days”, “Hours”}),

    // Étape 8 : Extraire l’heure du début au format “hh”
    #”Texte inséré entre les délimiteurs” = Table.AddColumn(#”Colonnes supprimées”, “Debut.hh”, each Value.FromText(Text.BetweenDelimiters(Text.From([Début], “fr-FR”), ” “, “:”))),

    // Étape 9 : Créer une liste de tranches horaires basée sur l’heure de début et le nombre total d’heures
    List.TranchesHoraires = Table.AddColumn(#”Texte inséré entre les délimiteurs”, “List.TranchesHoraires”, each List.Durations(#duration(0, [Debut.hh], 0, 0), [Nb.TranchesHoraires], #duration(0, 1, 0, 0))),

    // Étape 10 : Étendre la liste de tranches horaires en plusieurs lignes
    #”List.TranchesHoraires développé” = Table.ExpandListColumn(List.TranchesHoraires, “List.TranchesHoraires”),

    // Étape 11 : Supprimer la colonne “Debut.hh”
    #”Colonnes supprimées1″ = Table.RemoveColumns(#”List.TranchesHoraires développé”,{“Debut.hh”}),

    // Étape 12 : Ajouter une colonne avec la date du début sans les heures
    #”Date insérée” = Table.AddColumn(#”Colonnes supprimées1″, “Debut.Date”, each Date.From([Début]), type date),

    // Étape 13 : Modifier le type de colonne “Debut.Date” en type datetime
    #”Type modifié1″ = Table.TransformColumnTypes(#”Date insérée”,{{“Debut.Date”, type datetime}}),

    // Étape 14 : Ajouter une colonne avec la date et l’heure de début de chaque tranche
    Debut.Tranche = Table.AddColumn(#”Type modifié1″, “Debut.Tranche”, each [Debut.Date]+[List.TranchesHoraires]),

    // Étape 15 : Sélectionner les colonnes nécessaires
    #”Autres colonnes supprimées” = Table.SelectColumns(Debut.Tranche,{“Id”, “Fin”, “Debut.Tranche”}),

    // Associer chaque tranche horaire à son Shift (Type)
    // Étape 16 : Fractionner la colonne “Debut.Tranche” en colonnes “Debut.Date” et “Debut.Heure”
    #”Fractionner la colonne par délimiteur” = Table.SplitColumn(Table.TransformColumnTypes(#”Autres colonnes supprimées”, {{“Debut.Tranche”, type text}}, “fr-FR”), “Debut.Tranche”, Splitter.SplitTextByDelimiter(” “, QuoteStyle.Csv), {“Debut.Date”, “Debut.Heure”}),

    // Étape 17 : Modifier le type des colonnes “Debut.Date” et “Debut.Heure”
    #”Type modifié3″ = Table.TransformColumnTypes(#”Fractionner la colonne par délimiteur”,{{“Debut.Date”, type date}, {“Debut.Heure”, type time}}),

    // Étape 18 : Fusionner les tables en utilisant une jointure affichant toutes les lignes des 2 tables
    #”Requêtes fusionnées” = Table.NestedJoin(#”Type modifié3″, {“Debut.Heure”}, Table_Shift, {“H_Début”}, “Table_Shift”, JoinKind.FullOuter),

    // Étape 19 : Étendre la table résultante
    #”Table_Shift développé” = Table.ExpandTableColumn(#”Requêtes fusionnées”, “Table_Shift”, {“Type”, “H_Fin”}, {“Type”, “H_Fin”}),

    // Étape 20 : Trier les lignes en fonction de l’heure de début
    #”Lignes triées” = Table.Sort(#”Table_Shift développé”,{{“Debut.Heure”, Order.Ascending}}),

    // Étape 21 : Remplir les valeurs manquantes vers le bas pour Type et H_Fin
    #”Rempli vers le bas” = Table.FillDown(#”Lignes triées”,{“Type”, “H_Fin”}),

    // Calculer la durée en secondes par Shift (Type)
    // Étape 22 : Ajouter une colonne TR avec la valeur 3600
    #”TR ajoutée” = Table.AddColumn(#”Rempli vers le bas”, “TR”, each 3600),

    // Étape 23 : Ajouter une colonne avec la date et l’heure de fin de la tranche
    #”Personnalisée ajoutée” = Table.AddColumn(#”TR ajoutée”, “Personnalisé”, each DateTime.FromText(Date.ToText([Debut.Date])&” “&Time.ToText([H_Fin]))),

    // Étape 24 : Ajouter une colonne conditionnelle pour déterminer la heure de fin
    #”Colonne conditionnelle ajoutée” = Table.AddColumn(#”Personnalisée ajoutée”, “Fin.Date”, each if [Personnalisé] > [Fin] then Time.From([Fin]) else [H_Fin]),

    // Étape 25 : Regrouper les actons en fonction de leur Id, de la date de début et du type
    #”Lignes groupées” = Table.Group(#”Colonne conditionnelle ajoutée”, {“Id”, “Debut.Date”, “Type”}, {{“Debut”, each List.Min([Debut.Heure]), type nullable time}, {“Fin”, each List.Max([Fin.Date]), type any}, {“TR”, each List.Sum([TR]), type number}, {“NB”, each Table.RowCount(_), Int64.Type}}),

    // Étape 26 : Trier les lignes groupées
    #”Lignes triées1″ = Table.Sort(#”Lignes groupées”,{{“Id”, Order.Ascending}, {“Debut.Date”, Order.Ascending}, {“Type”, Order.Ascending}})
    in
    #”Lignes triées1″

    cordialement

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Incompréhension du visuel Matrice dans Power BI #135106
    Xavier Allart
    Participant

    Bonjour

    Le probleme est toujours le meme, il s’agit d’un probleme de relation entre les tables.
    Vous voulez afficher SUM(Invoices[IAmount]) par Orders[Order], mais il n’y a pas de relation directe entre ces 2 tables. Vous ne pouvez pas afficher par Order de calculs sur IAmount il faut modifier le contexte de relations. Voici une solution pour ce cas.

    Cas_X =
    VAR CustomerFiltered=TREATAS({“John”}, ‘Customer'[Customer]) RETURN
    SUMMARIZECOLUMNS(
    Orders[Order],
    Orders[OCustomer],
    CustomerFiltered,
    “OAmount”, SUM(Orders[OAmount]),
    “IAmount”, sumx(VALUES(Orders[OCustomer]),SUM(Invoices[IAmount]))
    )

    Cordialement

    en réponse à : Incompréhension du visuel Matrice dans Power BI #135008
    Xavier Allart
    Participant

    Bonjour
    Il s’agit d’un probleme de relation entre table selon le contexte de ligne et de filtre
    Invoice n’est pas en relation directe avec Order

    Power Pivot: Leçon de DAX no.2 (RELATED)

    Power BI DAX RelatedTable Function: Get the subtable related to the current row


    https://www.sqlbi.com/articles/using-related-and-relatedtable-in-dax/
    https://www.sqlbi.com/articles/understanding-context-transition-in-dax/

    Des pistes pour résoudre le probleme
    1) Passer la relation entre les tables Invoice et Custumer en double sens
    2) Dans l'onglet Filtres du visuel, Modifier le filtre sur somme OrderAmont a different de null
    3) MesureInvoice = sumx(VALUES('Order'[Customer]),SUM(Invoice[Invoice_Amount]))
    4)

    Cordialement

    en réponse à : Grouper secteurs d’un Pie chart #134864
    Xavier Allart
    Participant

    Bonjour

    Voici 2 solutions, basées sur la création d’une nouvelle table regroupant les heures par projet et par employe, puis ajout d’une colonne “Regroupement” pour regouper tous les projets inférieur à 25% par employé.
    Cette table est composée des colonnes suivantes :
    Employe, GroupeProjet, Projet, TotalHeures, Pourcentage

    Solution en DAX :
    Ajouter une table DAX
    DAX-Projets =
    ADDCOLUMNS(
    SUMMARIZE(‘TimeSheet’, ‘TimeSheet'[Employe], ‘TimeSheet'[Project]),
    “TotalHeures”, CALCULATE(SUM(‘TimeSheet'[Time])),
    “Pourcentage”, DIVIDE(CALCULATE(SUM(‘TimeSheet'[Time])), CALCULATE(SUM(‘TimeSheet'[Time]), ALLEXCEPT(‘TimeSheet’, ‘TimeSheet'[Employe])))
    )

    Dans cette nouvelle table ajouter une colonne
    GroupeProject =
    IF (‘DAX-Projets'[Pourcentage] < 0.25, “Other”, ‘DAX-Projets'[Project])

    Solution en Power Query :
    Depuis la table TimeSheet, creer une nouvelle table par réference
    Regouper sur Employe et calculer la somme de Time
    Nommer cette table PQ-Employes

    Depuis la table TimeSheet, creer une nouvelle table par réference
    Regouper sur Employe et Project calculer la somme de Time
    Nommer cette table PQ-Projets
    Fusionner avec la table sur PQ-Employes sur le champ employe
    Developper la colonne TotalHeure de la table PQ-Employes
    Ajouter une colonne “Pourcentage” = [TotalHeure]/[Employe.TotalHeure]
    Ajouter une colonne conditionnelle “GroupeProject” = if [#”Pourcentage”] < 0.25 then “Other” else [Project]

    Cordialement

    Attachments:
    You must be logged in to view attached files.
15 sujets de 46 à 60 (sur un total de 143)