Toutes mes réponses sur les forums
-
AuteurMessages
-
Daniel
ParticipantBonjour 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 calculEnsuite, 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
DanielDaniel
ParticipantBonjour 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
DanielDaniel
ParticipantBonjour 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
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour Guillaume, Ludo, le Forum,
J’ai oublié de joindre le fichier excel d’origine avec ma petite contribution.
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour 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
CombineTablesFin de la requête
En espérant avoir pu t’aider.
Cordialement
DanielDaniel
ParticipantBonjour 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éesCordialement
Daniel16 mai 2024 à 12 h 34 min en réponse à : Requête automatique sur plusieurs fichiers et mise en forme #140804Daniel
ParticipantBonjour 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
PivoterColonneSANDREIl 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
DanielAttachments:
You must be logged in to view attached files.6 mai 2024 à 14 h 09 min en réponse à : Même résultat dans col 2 quand NOM PRENOM inversés dans Col 1 #140393Daniel
ParticipantBonjour 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 TATAet 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
DanielDaniel
ParticipantBonjour 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êteAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour 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
GoupRunningTotalList2 – 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
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour 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
DanielDaniel
ParticipantBonjour 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
DanielAttachments:
You must be logged in to view attached files.13 janvier 2024 à 11 h 29 min en réponse à : Ajout colonne Horodatage – Valeur de la dernière ligne. #136206Daniel
ParticipantBonjour 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
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour 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
SuppressionColonnesFeuil1 : 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 maxCordialement
DanielAttachments:
You must be logged in to view attached files.12 janvier 2024 à 9 h 43 min en réponse à : Ajout colonne Horodatage – Valeur de la dernière ligne. #136158Daniel
ParticipantBonjour 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
SuppressionDerniereLignetabData 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° FactureEn espérant avoir pu t’apporter un peu d’aide.
Cordialement
Daniel -
AuteurMessages