Toutes mes réponses sur les forums

15 sujets de 136 à 150 (sur un total de 283)
  • Auteur
    Messages
  • en réponse à : jour variable dans la formule numéro de semaine #90227
    Stéphane Lorin
    Participant

    Bonjour

    la fonction Expression.Evaluate peut répondre à votre besoin

    each Date.DayOfWeek([Date],Expression.Evaluate(“Day.Monday”,#shared))

    Day.Monday est ici du texte (donc paramétrable) et Expression.Evaluate va évaluer cette chaine de caractères dans l’environnement #shared qui contient toutes les fonctions M.
    l’argument #shared est obligatoire, sinon la chaîne de caractères sera évaluée comme… une chaîne de caractère !
    Il faut reconnaitre que l’aide de Microsoft n’est pas très claire sur cette fonction.
    https://docs.microsoft.com/fr-fr/powerquery-m/expression-evaluate

    Stéphane

    en réponse à : Etablir un rang paramétrique #90143
    Stéphane Lorin
    Participant

    Bonjour

    il faut mettre le nom de la mesure avant le VAR :

    Rang = VAR Region= Feuil1[Region]
    RETURN RANKX(FILTER(Feuil1,Feuil1[Region]=Region),Feuil1[Pop])

    Stéphane

    en réponse à : Etablir un rang paramétrique #90128
    Stéphane Lorin
    Participant

    Bonjour

    Je vous propose la formule DAX suivante
    VAR Region= Tableau1[Region]
    RETURN RANKX(FILTER(Tableau1;Tableau1[Region]=Region);Tableau1[Pop])

    j’obtiens bien le résultat de la colonne E de votre ficher Excel

    Cordialement
    Stéphane

    en réponse à : Date du jour #90036
    Stéphane Lorin
    Participant

    Bonjour

    Pour commencer vous pourriez nous remercier Christian et moi d’avoir répondu à votre question d’hier, j’ai pris le temps de répondre alors qu’il l’avait déjà fait n’ayant pas remarqué que vos deux messages étaient similaires.

    Ensuite, la fonction DateTime.LocalNow() se met bien à jour pour moi lorsque je charge la requête Power Query en tableau ou en rapport de tableau croisé dynamique ou encore dans le modèle de données. Il faut bien actualiser l’objet (la table ou le TCD)

    Stéphane

    en réponse à : Comparaison 3 dates fixes qui se renouvelle chaque jours #90003
    Stéphane Lorin
    Participant

    Bonjour
    Vous ne pouvez pas le faire directement dans Power Query, il faut modifier le code à la main mais rien de compliqué.

    Pour commencer vous faites un filtre sur le champ StartDate <= 28/04/2021
    puis avec l’option “Avancé” vous ajoutez un filtre sur le champ EndDate >= 28/04/2021

    cela donnera le code suivant :
    Table.SelectRows(Votre_étape_précédente, each [StartDate] <= #date(2021, 4, 28) and [EndDate] >= #date(2021, 4, 28))

    ensuite vous modifiez à la main le filtre en remplaçant la date par le champ [DateActuelle]

    Table.SelectRows(Votre_étape_précédente, each [StartDate] <= [DateActuelle] and [EndDate] >= [DateActuelle])

    Cordialement

    Stéphane

    en réponse à : Problème fonction CALCULATE via PowerPivot sous Excel 2010 #89987
    Stéphane Lorin
    Participant

    Bonsoir

    Si CALCULATE pose problème, avez-vous essayé avec SUMX ?

    SUMX(FILTER(BASE_1;[ANNEE]=2019);[CA HT])

    Cordialement
    Stéphane

    en réponse à : Projection mensuelle d’une valeur entre 2 dates dans une matrice #89950
    Stéphane Lorin
    Participant

    Bonjour

    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’entier

    La 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

    en réponse à : Création d’une mesure ou d’une colonne avec des conditions #89937
    Stéphane Lorin
    Participant

    Bonjour

    Je vous propose une autre approche :

    Sous Excel votre formule serait =SOMME(DECALER([@TV020];;;1;[@[E_SEC_VITS_REG]]))

    Avec PowerQuery, cela se traduit en List.Sum(List.Range(Record.ToList(_),5,[E_SEC_VITS_REG]))

    le caractère _ vous permet de récupérer l’enregistrement actuel
    la fonction Record.ToList transforme cet enregistrement en liste
    A partir de la 5e colonne vous voulez faire la somme de 2, 4 ou 8 éléments soit la valeur du champ [E_SEC_VITS_REG] : la fonction List.Range(Liste,5,[E_SEC_VITS_REG]) répond à ce besoin
    Il ne reste plus qu’à faire la somme avec List.Sum

    cordialement

    Stéphane

    en réponse à : Calculer le délai de travail entre deux dates Power BI (DAX) #89922
    Stéphane Lorin
    Participant

    Bonjour
    Vous dites ne pas avoir tout compris.
    A quelle étape bloquez-vous ?
    J’ai déjà expliqué en détail ma démarche le 15 janvier et le 16 février. Je ne vais pas reprendre de nouveau ces explications mais je peux préciser un point ou deux au besoin.

    Cordialement
    Stéphane

    en réponse à : requête redondante #89921
    Stéphane Lorin
    Participant

    Bonjour Kaelig
    Auriez-vous un exemple simplifié et réduit de ce que vous souhaitez sous PowerBI desktop ?
    Ce serait plus aisé pour vous aider.
    Stéphane

    Stéphane Lorin
    Participant

    Bonjour Baptiste

    Vous pouvez regarder le sujet “regrouper puis étendre en colonnes” dans la rubrique “Power Query” du forum. Le 4 avril j’expliquais qu’il était possible d’utiliser la fonction Table.Group puis de remplacer à la main un List.Sum par un Text.Combine pour obtenir ce que vous désirez.

    Cordialement

    Stéphane

    en réponse à : Gestion d’erreur #89230
    Stéphane Lorin
    Participant

    Bonjour
    Connaissez vous le site de Ben Gribaudo ?
    Il a consacré un article début 2020 sur la gestion des erreurs dans Power Query
    https://bengribaudo.com/blog/2020/01/15/4883/power-query-m-primer-part-15-error-handling

    Je conseille par ailleurs la lecture de toute sa série de 20 articles, c’est parfois ardu mais c’est une mine d’information sur ce langage.
    Cordialement
    Stéphane

    en réponse à : regrouper puis étendre en colonnes #89053
    Stéphane Lorin
    Participant

    Bonjour
    Votre phrase “J’ai regroupé, pivoté, dépivoté dans tous les sens, impossible d’obtenir le résultat voulu.” m’amène à la réflexion suivante : la fenêtre d’aide pour la création de regroupement dans PowerQuery est très limitée par rapport aux possibilités immenses de la fonction Table.Group

    Dans votre cas, comme votre colonne “email” est du texte vous ne pouvez que “compter les lignes” ou récupérer “toutes les données”. Faire la somme, la moyenne, le max ou le min n’est pas intéressant.
    Si vous choisissez “Faire la somme” de votre colonne “Email”, each List.Sum([email]) vous renverra une erreur. Normal puisque qu’il n’est pas possible de faire la somme de texte.
    Alors que de nombreuses fonctions “List” ou “Text” sont possibles.
    Par exemple vous pouvez concaténer toutes vos adresses en utilisant Text.Combine
    each Text.Combine([email],”;”) vous retourne “email1;email2;email3”
    et ainsi il ne vous reste plus qu’à fractionner la colonne suivant le “;” pour obtenir le résultat attendu en 2 étapes seulement (un Table.Group puis un Table.SplitColumn)

    Autre exemple pour simplifier la solution proposée par Kim
    Lorsque vous indiquez dans l’agrégation “Toutes les données” each _, type table vous obtenez une table.
    Ce “_” indique votre table initiale filtrée avec les lignes correspondant à votre regroupement
    il suffit d’ajouter un Table.AddIndexColumn devant pour récupérer directement le n° de la ligne
    each Table.AddIndexColumn(_,”Index”), type table. il ne reste plus qu’à développer les colonnes et à pivoter la colonne “Index”.

    Cette fonction Table.Group possède également 2 arguments optionnels : GroupKind (Local ou Global) et Comparer (n’importe quelle fonction pour spécifier les regroupements). Ces arguments ne sont pas disponibles directement et nécessitent d’entrer dans le code M. Mais les possibilités de regroupement sont décuplés.

    Cordialement
    Stéphane

    en réponse à : Suivi mois par mois #89012
    Stéphane Lorin
    Participant

    Bonjour

    ci-joint un exemple sous Excel avec une table produit, une table de date

    Une mesure pour compter de nombre de produit “actif” sur la période considérée (mois ou semaine)

    Nombre:=COUNTROWS(FILTER(Liste_Produits;Liste_Produits[Fin]>=MIN(Liste_Date[Date])&&Liste_Produits[Début]<=MAX(Liste_Date[Date])))

    une autre pour récupérer la liste des produits

    Liste:=CONCATENATEX(FILTER(Liste_Produits;Liste_Produits[Fin]>=MIN(Liste_Date[Date])&&Liste_Produits[Début]<=MAX(Liste_Date[Date]));Liste_Produits[Produit];”,”)

    une restitution par semaine ou par mois en tableau croisé dans Excel
    à adapter dans PowerBI

    Cordialement

    Stéphane

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Transformer facilement des entête de colonnes en lignes #88895
    Stéphane Lorin
    Participant

    Bonjour

    Il y a une transformation dédiée dans powerquery pour ce genre de problématique.

    Il faut sélectionner votre colonne “centre” et “dépivoter les autres colonnes” (menu transformer ou par clic-droit)

    Stéphane

15 sujets de 136 à 150 (sur un total de 283)