Toutes mes réponses sur les forums

15 sujets de 16 à 30 (sur un total de 121)
  • Auteur
    Messages
  • en réponse à : Calcul nb de jours entre deux dates DATEDIFF #142471
    Daniel
    Participant

    Bonjour Mohamed Yacine AMMARI, le Forum,

    Et en créant une autre colonne contenant la date maximum de ton jeu de données,
    MaxDateFin = Max(Donnees[DateFinPeriode])
    puis la colonne Nb Jours comme vous l’avez fait mais en reprenant dans la formule DATEDIFF(CurrentEcheance, DateFin, DAY) ou :
    CurrentEcheance est la colonne contenant la date d’échéance de ta table Donnees
    DateFin est la colonne calculée contenant la date maximum de ta table Donnees
    DAY est le paramètre qui sert de base au calcul

    Ensuite, il suffit de masquer la colonne MaxDateFin du jeu de données par Masquer dans la vue Rapport.
    Je tenterais cette approche, qui devrait se rapprocher de ce que vous souhaitez, en espérant que cela vous auras aider ou tout au moins vous rapprocher de la solution.

    Cordialement
    Daniel

    en réponse à : Segment sur colonne a entrées multiples possibles #142399
    Daniel
    Participant

    Bonjour alexandre.rongier, le Forum,

    Je ne sais pas si cela va répondre à ta demande, mais lorsqu’un segment est placé dans un rapport, tu devrais voir trois petits points (…), il faut cliquer dessus et un menu va apparaître et là sélectionne Rechercher (cela aura comme effet de rajouter un zone de recherche au segment), on pourra y taper du texte comme le nom de ton département qui si j’ai bien compris peut être unique ou contenu dans une chaîne de caractère (Moselle, Meurthe et Moselle, Moselle/Jura) par exemple. le texte tapé filtrera les items du segment et il suffira de les sélectionner.
    Si cela ne correspond pas à ton attente, je ne vois pour l’instant pas d’autre idée permettant de résoudre ta demande.
    Cordialement
    Daniel

    en réponse à : [MATRICE] Calcul pourcentage #142394
    Daniel
    Participant

    Bonjour jsimon75002, le Forum,

    J’obtiens le résultat attendu avec la mesure suivante :

    Pct =
    VAR __SENT = CALCULATE([Total_NB], tabData[Statut]=”SENT”)
    VAR __OK = CALCULATE([Total_NB], tabData[Statut]=”OK”)
    VAR __TOTAL = CALCULATE([Total_NB],ALL(tabData[Statut]))
    RETURN
    SWITCH(TRUE(),SELECTEDVALUE(tabData[Statut])=”SENT”, DIVIDE(__SENT, __TOTAL),
    SELECTEDVALUE(tabData[Statut])=”OK”, DIVIDE(__OK,__TOTAL)
    )

    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule conditionnelle contrat de travail #141953
    Daniel
    Participant

    Bonjour Guillaume, Ludo, le Forum,

    J’ai oublié de joindre le fichier excel d’origine avec ma petite contribution.
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule conditionnelle contrat de travail #141952
    Daniel
    Participant

    Bonjour Guillaume, Ludo, le Forum,
    Je propose la solution suivante (attention, j’ai gardé la colonne Sortie de ton exemple, il ne faut pas la prendre en compte dans tes données d’origine)

    Début de la requête

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“Prénom du salarie”, type text}, {“Nom d’usage du salarie”, type text}, {“Date d’embauche”, type datetime}, {“Date de fin de contrat prevue”, type datetime}, {“Date de sortie”, type any}, {“Sortie”, type text}}),
    RemplacerVidesParNull = Table.ReplaceValue(ModificationTypeDonnees,”(vide)”,null,Replacer.ReplaceValue,{“Date de sortie”}),
    GroupSalaries = Table.Group(RemplacerVidesParNull, {“Prénom du salarie”, “Nom d’usage du salarie”}, { {“AllRows”, each Table.FillUp(_,{“Date de sortie”}), type table [Prénom du salarie=nullable text, #”Nom d’usage du salarie”=nullable text, #”Date d’embauche”=nullable datetime, Date de fin de contrat prevue=nullable datetime, Date de sortie=nullable datetime, Sortie=nullable text]}}),
    AjoutColSortie = Table.AddColumn(GroupSalaries, “SortieNew”, each Table.AddColumn([AllRows], “SortieNew”, each if [Date de sortie] = null then “Non” else “Oui”)),
    CombineTables = Table.Combine(AjoutColSortie[SortieNew])
    in
    CombineTables

    Fin de la requête

    En espérant avoir pu t’aider.
    Cordialement
    Daniel

    en réponse à : Année et mois qui disparaissent dans une matrice #141293
    Daniel
    Participant

    Bonjour jjdessain, le Forum,

    Je pense que ton problème vient du fait que les dates de ta table de faits contiennent des heures et que ta table de temps ne contient que des dates. J’aurais tendance à ne garder que les dates dans la table de faits sauf si tu estimes avoir besoin des heures pour des calculs futurs dans ce cas il faudrait créer une table des heures.
    Ce qui donnerait dans ta table de faits :
    Date Ouverture
    Heure Ouverture
    Date Résolution
    Heure Résolution
    Date Création
    Heure Création
    Date Fermeture ou Clôture
    Heure Fermeture ou Clôture
    et ainsi de suite pour chaque colonne de dates et d’heure
    Normalement, cela devrait solutionner ton problème de non affichage des données

    Cordialement
    Daniel

    en réponse à : Requête automatique sur plusieurs fichiers et mise en forme #140804
    Daniel
    Participant

    Bonjour helmout.viandard, Le Forum,

    En partant de ton exemple ci-dessus, je propose la requête suivante :

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“Commune”, type text}, {“date”, type text}, {“SANDRE”, type text}, {“résultat”, type text}}),
    PivoterColonneSANDRE = Table.Pivot(ModificationTypeDonnees, List.Distinct(ModificationTypeDonnees[SANDRE]), “SANDRE”, “résultat”)
    in
    PivoterColonneSANDRE

    Il faut effectivement pivoter la colonne Sandre mais il faut choisir l’opération à réaliser dans ce cas il ne faut pas agréger les données. Donc en clair, choisir la colonne “SANDRE” et dans la boite de dialogue, pour la colonne de valeurs il faut choisir la colonne “résultat”, cliquez ensuite sur Opérations avancées et sélectionner “Ne pas agréger”.

    Cela donne le résultat escompté, mais il va falloir la tester sur ton jeu de données complet.
    Cordialement
    Daniel

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

    Bonjour eutropejc, le Forum,

    Solution en utilisant un tableau de corrections à apporter (comme suit)

    Colonne à corriger Colonne corrigée
    TATA TOTO TOTO TATA
    TATA BUBUTE BUBU TATA

    et en insérant une étape dans la requête Power query
    = List.Accumulate(
    {0..List.Count(tabCorrections[Colonne à corriger])-1},
    ModificationTypeDonnees,
    (state,current)=>Table.ReplaceValue(state,tabCorrections[Colonne à corriger]{current}, tabCorrections[Colonne corrigée]{current}, Replacer.ReplaceText,{“DONNEES”}))

    Cela implique de regarder et de maintenir la tables des corrections, mais je n’ai pas trouvé d’autres solutioons en espérant que d’autres membres t’apporteront leur expertise et surtout solutionneront ton soucis de données

    Cordialement
    Daniel

    en réponse à : recherche selon plusieurs conditions #138730
    Daniel
    Participant

    Bonjour Emilie, le Forum,

    En espérant répondre à ta demande, voici ce que je propose :

    Requête (voir aussi fichier joint)
    let
    Source = Excel.CurrentWorkbook(){[Name=”tabVisitesPatients”]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“Patient”, type text}, {“Date de début”, type date}, {“Date de fin”, type date}}),
    // On regroupe les lignes du même patient
    GrouperLignesPatient = Table.Group(ModificationTypeDonnees, {“Patient”}, {{“AllRows”, each _, type table [Patient=nullable text, Date de début=nullable date, Date de fin=nullable date, Index=nullable number]}}),
    // Dabs la table de regroupement, on ajoute un index pour chaque ligne
    AjoutColIndex = Table.TransformColumns(GrouperLignesPatient, {{“AllRows”, each Table.AddIndexColumn(_,”IndexVisites”,0,1)}}),
    // On va maintenant récupérer la date de debut de la visite future
    DateVisteFuture = Table.AddColumn(AjoutColIndex, “AllRows1″, each let
    AllDataTable = [AllRows],
    DateVisteFuture = Table.AddColumn(
    AllDataTable,”Date Visite Future”,
    each try AllDataTable [Date de début] {[IndexVisites]+1} otherwise null,type date)
    in DateVisteFuture),
    CalculNombreDeJours = Table.TransformColumns(DateVisteFuture, {{“AllRows1″, each Table.AddColumn(_,”Nb jours”, each [Date Visite Future] – [Date de fin], Int64.Type)}}),
    ListeofSingleTables = Table.Combine( CalculNombreDeJours[AllRows1],{“Patient”,”Date de début”,”Date de fin”, “Nb jours”}),
    ModificationTypeDonneesFinale = Table.TransformColumnTypes(ListeofSingleTables,{{“Nb jours”, Int64.Type}})
    in
    ModificationTypeDonneesFinale
    Fin de la requête

    Attachments:
    You must be logged in to view attached files.
    en réponse à : historique et cumul #136778
    Daniel
    Participant

    Bonjour hboisteau, le Forum,

    1 – Créer une fonction qui servira à faire le calcul demandé comme suit
    (valeurs as list, groupe as list) as list =>

    let
    GoupRunningTotalList = List.Generate
    (
    ()=> [ GoupRunningTotal = valeurs{0}, i = 0 ],

    each [i] < List.Count(valeurs),

    each try
    if groupe{[i]} = groupe{[i] + 1}
    then [GoupRunningTotal = [GoupRunningTotal] + valeurs{[i] + 1}, i = [i] + 1]
    else [GoupRunningTotal = valeurs{[i] + 1}, i = [i] + 1]

    otherwise [i = [i] + 1]
    ,
    each [GoupRunningTotal]
    )
    in
    GoupRunningTotalList

    2 – Requête des données
    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“date”, type date}, {“N° de serie”, type text}, {“resultat1”, Int64.Type}, {“resultat2”, Int64.Type}}),
    AjoutColAnneeMois = Table.AddColumn(ModificationTypeDonnees, “Période”, each Date.ToText([date],”yyyy-MM”)),
    GroupAnneeMoisSerie = Table.Group(AjoutColAnneeMois, {“Période”, “N° de serie”}, {{“Historique du numéro de série”, each Table.RowCount(_), Int64.Type}, {“Resultat1”, each List.Sum([resultat1]), type nullable number}, {“Resultat2”, each List.Sum([resultat2]), type nullable number}}),
    TriSerieAnneeMois = Table.Sort(GroupAnneeMoisSerie,{{“N° de serie”, Order.Ascending}, {“Période”, Order.Ascending}}),

    BufferedValues = List.Buffer(TriSerieAnneeMois[#”Historique du numéro de série”]),
    BufferedGroup = List.Buffer(TriSerieAnneeMois[#”N° de serie”]),

    RT = Table.FromColumns(
    {
    TriSerieAnneeMois[Période],TriSerieAnneeMois[#”N° de serie”], TriSerieAnneeMois[#”Historique du numéro de série”],
    fxGroupedRunningTotal(BufferedValues, BufferedGroup),TriSerieAnneeMois[Resultat1],TriSerieAnneeMois[Resultat2]
    },
    {
    “Période”,
    “N° de série”,
    “Historique du numéro de série”,
    “Nombre apparition numéro de série”,
    “Résultat 1”,
    “Résultat 2”
    }
    ),
    TriSurPériode = Table.Sort(RT,{{“Période”, Order.Ascending}})

    in TriSurPériode

    Reste un souci de tri sur le numéro de série qui ne donne pas exactement le même résultat que celui attendu.
    Cordialement
    Daniel

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

    Bonjour Sébastien, le Forum,

    Tu parle de variabilité des jours ouvrés, mais quel serait le paramètre qui définirait cette variabilité.
    Pourrais-tu donner de plus amples explications ?
    Cordialement
    Daniel

    en réponse à : Passer d’une liste en colonne à un tableau. #136745
    Daniel
    Participant

    Bonjour jsimon75002, Xavier, Le Forum,

    Voici ma contribution
    1ère requête
    let
    Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
    AjoutColIndex = Table.AddIndexColumn(Source, “Index”, 1, 1, Int64.Type),
    Conserver8PremieresLignes = Table.FirstN(AjoutColIndex,8),
    ModificationTypeDonnees = Table.TransformColumnTypes(Conserver8PremieresLignes,{{“Index”, type text}, {“Colonne1”, type text}}),
    PermutationColonnes = Table.ReorderColumns(ModificationTypeDonnees,{“Index”, “Colonne1″}),
    TranspositionTable = Table.Transpose(PermutationColonnes),
    CreationDesListes = Table.ToColumns(TranspositionTable)
    in
    CreationDesListes
    2ème requête
    let
    Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“Colonne1″, type any}}),
    #”Premières lignes supprimées” = Table.Skip(#”Type modifié”,8),
    AjoutColIndex = Table.AddIndexColumn(#”Premières lignes supprimées”, “Index”, 1, 1, Int64.Type),
    AjoutColLigneDétails = Table.AddColumn(AjoutColIndex, “LigneDétail”, each if [Colonne1] = “Détails” then 1 else if [Index] = 1 then 1 else null),
    PaquetIdentifiant = Table.AddColumn(AjoutColLigneDétails, “IdentifiantPaquetLignes”, each if [Index]=1 then 1 else List.Sum(List.FirstN(AjoutColLigneDétails[LigneDétail],[Index]))),
    FiltreLignesNullOuDétails = Table.SelectRows(PaquetIdentifiant, each ([Colonne1] <> null and [Colonne1] <> “Détails”)),
    #”Lignes groupées” = Table.Group(FiltreLignesNullOuDétails, {“IdentifiantPaquetLignes”}, {{“All”, each _, type table [Colonne1=any, Index=number, LigneDétail=any, IdentifiantPaquetLignes=number]}}),
    #”Personnalisée ajoutée” = Table.AddColumn(#”Lignes groupées”, “ColIdentifiant”, each Table.AddIndexColumn([All],”ColIdentifiant”,1)),
    #”ColIdentifiant développé” = Table.ExpandTableColumn(#”Personnalisée ajoutée”, “ColIdentifiant”, {“Colonne1”, “ColIdentifiant”}, {“Colonne1”, “ColIdentifiant.1″}),
    #”Colonnes supprimées” = Table.RemoveColumns(#”ColIdentifiant développé”,{“All”}),
    #”Colonne dynamique” = Table.Pivot(Table.TransformColumnTypes(#”Colonnes supprimées”, {{“ColIdentifiant.1”, type text}}, “fr-FR”), List.Distinct(Table.TransformColumnTypes(#”Colonnes supprimées”, {{“ColIdentifiant.1”, type text}}, “fr-FR”)[ColIdentifiant.1]), “ColIdentifiant.1”, “Colonne1″),
    #”Colonnes renommées” = Table.RenameColumns(#”Colonne dynamique”,tabEntetesColonnes),
    #”Valeur remplacée” = Table.ReplaceValue(#”Colonnes renommées”,”€”,””,Replacer.ReplaceText,{“Montant HT”, “Montant TTC”}),
    #”Valeur remplacée1″ = Table.ReplaceValue(#”Valeur remplacée”,”.”,”,”,Replacer.ReplaceText,{“Montant HT”, “Montant TTC”}),
    #”Type modifié1″ = Table.TransformColumnTypes(#”Valeur remplacée1″,{{“Date d’émission”, type date}, {“Date de dépôt”, type date}, {“Etat”, type text}, {“Réfèrence”, Int64.Type}, {“Date de virement”, type date}, {“N* de virement”, type text}, {“Montant HT”, type number}, {“Montant TTC”, type number}}),
    #”Colonnes supprimées1″ = Table.RemoveColumns(#”Type modifié1″,{“IdentifiantPaquetLignes”})
    in
    #”Colonnes supprimées1″

    Voir fichier ci-joint
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajout colonne Horodatage – Valeur de la dernière ligne. #136206
    Daniel
    Participant

    Bonjour jsimon75002, le Forum,

    Essaye ceci comme source
    Excel.Workbook(File.Contents(“\\Mac\Home\Desktop\TESTS\MyReport_DATA.xlsx”), null, true)[Data]{0}
    Cela devrait te donner l’affichage de tes données. Par contre, je ne vois pas en dernière ligne la date de mise à jour comme annoncé dans ton 1er message.
    Sinon, ce que je t’ai communiqué fonctionne une fois la source modifiée mais la date est fausse car inexistante et la dernière ligne de données est supprimée par la dernière étape (suppression de la ligne contenant la date) alors que dans le cas de ton fichier de données elle correspond à un ligne de donnée valide.
    Merci de ton retour.
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Filtrer un tableau selon 2 critères #136163
    Daniel
    Participant

    Bonjour Cricri, le Forum,

    Peut-être que ce qui suit vous aidera ou à tout le moins vous mettra sur une piste pour solutionner votre problème.

    let
    Source = Excel.CurrentWorkbook(){[Name=”Feuil1″]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“Fournisseur”, Int64.Type}, {“Article”, type any}, {“Date achat”, type datetime}, {“prix”, type number}}),
    GrouperSurFournisseurArticle = Table.Group(ModificationTypeDonnees, {“Fournisseur”, “Article”}, {{“DateMax”, each List.Max([Date achat]), type nullable datetime}, {“AllRows”, each _, type table [Fournisseur=nullable number, Article=any, Date achat=nullable datetime, prix=nullable number]}}),
    AjoutColDernierPrix = Table.AddColumn(GrouperSurFournisseurArticle, “Dernier Prix”, each let DernDate = [DateMax] in Table.SelectRows([AllRows], each [#”Date achat”] = DernDate)[prix]{0}),
    SuppressionColonnes = Table.RemoveColumns(AjoutColDernierPrix,{“DateMax”, “AllRows”})
    in
    SuppressionColonnes

    Feuil1 : nom du tableau structuré Excel
    On groupe sur le fournisseur et l’article en prenant la date Max et toutes les lignes contenues dans le jeu de données
    AjoutColDernierPrix :
    DernDate : correspond à la date Max de chaque couple Fournisseur/Article
    puis on sélectionne les lignes pour lesquelles la date d’achat correspond à la date Max
    [prix]{0} correspond à la colonne Prix et {0] à la 1ère ligne partant su principe que l’on a qu’une seule date max

    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajout colonne Horodatage – Valeur de la dernière ligne. #136158
    Daniel
    Participant

    Bonjour jsimon75002, le Forum,

    Bonne année à toi aussi.
    Pour résoudre ton problème, je tenterais an Power Query la chose suivante :
    let
    Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“N° Facture”, type any}}),
    DateMiseAJour = let
    NumLigne = Table.RowCount(ModificationTypeDonnees)-1,
    DateData = ModificationTypeDonnees{NumLigne}[#”N° Facture”]
    in DateData,
    AjoutColDate = Table.AddColumn(ModificationTypeDonnees, “Date Maj”, each DateMiseAJour),
    ModificationTypeDonneesColDate = Table.TransformColumnTypes(AjoutColDate,{{“Date Maj”, type datetime}}),
    SuppressionDerniereLigne = Table.RemoveLastN(ModificationTypeDonneesColDate,1)
    in
    SuppressionDerniereLigne

    tabData correspond à tes données source (à changer éventuellement) car je suis parti d’un tableau structuré sous Excel.
    NumLigne compte le nombre de lignes de ton jeu de données auquel je retranche 1 car Power query commence le compte à partir de zéro
    DateDate extrait la date se situant à la ligne NumLigne de la colonne N° Facture

    En espérant avoir pu t’apporter un peu d’aide.
    Cordialement
    Daniel

15 sujets de 16 à 30 (sur un total de 121)