Toutes mes réponses sur les forums

15 sujets de 61 à 75 (sur un total de 121)
  • Auteur
    Messages
  • Daniel
    Participant

    Bonjour 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
    Daniel

    Requê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
    SuppressionColonnePrevValue

    Attachments:
    You must be logged in to view attached files.
    Daniel
    Participant

    Bonjour 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
    Daniel

    en réponse à : difference de deux releve entres deux heures #125740
    Daniel
    Participant

    Bonjour 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
    FiltreLignesNulles

    Ci-joint le fichier avec la requête ci-dessus.
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Somme si en DAX #125137
    Daniel
    Participant

    Bonjour 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
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajouter jours ouvrés #124817
    Daniel
    Participant

    Bonjour Sapeur1, le Forum,

    Une autre solution qui donne le résultat escompté (voir fichier ci-joint)
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : résultat d’aujourd’hui moins le résultat d’hier #124361
    Daniel
    Participant

    Bonjour 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
    Daniel

    en réponse à : résultat d’aujourd’hui moins le résultat d’hier #124359
    Daniel
    Participant

    Bonjour 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
    Daniel

    en réponse à : colonne conditionelle Power Query #124165
    Daniel
    Participant

    Bonjour 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
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Regroupement tables démultiplication des données #124002
    Daniel
    Participant

    Bonjour 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
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Création d’une carte personnalisée #123244
    Daniel
    Participant

    Bonjour Christine, Dominique, le Forum,

    Peut-être que cette vidéo Youtube répondra à votre attente.

    ou celle-ci

    Cordialement
    Daniel

    en réponse à : Remplir vers le bas dans certains cas #122446
    Daniel
    Participant

    Bonjour 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
    Daniel

    en réponse à : Remplir vers le bas dans certains cas #122347
    Daniel
    Participant

    Bonjour 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
    Daniel

    en réponse à : Remplir vers le bas dans certains cas #122313
    Daniel
    Participant

    Bonjour 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
    Daniel

    en réponse à : Remplir vers le bas dans certains cas #122290
    Daniel
    Participant

    Bonjour k.musseleck, le Forum,
    Juste oublié de joindre le fichier excel contenant les deux requêtes, désolé.
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Remplir vers le bas dans certains cas #122289
    Daniel
    Participant

    Bonjour 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

15 sujets de 61 à 75 (sur un total de 121)