Toutes mes réponses sur les forums
-
AuteurMessages
-
Daniel
ParticipantBonjour princessefiona_57, le Forum,
Voici une proposition qui je l’espère vous donnera le résultat attendu ou vous donnera des pistes d’investigation pour résoudre votre problème.
Suis parti du tableau_Test comme base de travail à adapter dans le code si pas la bonne source.let
Source = Excel.CurrentWorkbook(){[Name=”Tableau_Test”]}[Content],
ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“N° d’expé”, type text}, {“Date d’expé”, type date}, {“N° BL”, type text}, {“Expéditeur”, type text}, {“Destinataire”, type text}, {“CP”, type any}, {“Localité”, type text}, {“Pays”, type text}, {“UM”, Int64.Type}, {“Poids “, Int64.Type}, {“Date livraison”, type date}}),
FractionnerColBL7PremiersCaracteres = Table.SplitColumn(ModificationTypeDonnees, “N° BL”, Splitter.SplitTextByPositions({0, 7}, false), {“N° BL.1”, “N° BL.2”}),
ModificationTypeDonnesColBL = Table.TransformColumnTypes(FractionnerColBL7PremiersCaracteres,{{“N° BL.1”, type text}, {“N° BL.2”, type text}}),
FractionnerColBLParDelimiteur = Table.ExpandListColumn(Table.TransformColumns(ModificationTypeDonnesColBL, {{“N° BL.2”, Splitter.SplitTextByDelimiter(“/”, QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), “N° BL.2″),
#”AjoutColonne NoBL” = Table.AddColumn(FractionnerColBLParDelimiteur, “No BL”, each if Text.Length([#”N° BL.2″]) < 3 then [#”N° BL.1″] &Text.PadStart(“0″,3-Text.Length([#”N° BL.2″])) & [#”N° BL.2″] else [#”N° BL.1″] & [#”N° BL.2″]),
PermutationColNoBL = Table.ReorderColumns(#”AjoutColonne NoBL”,{“N° d’expé”, “Date d’expé”, “N° BL.1”, “N° BL.2”, “No BL”, “Expéditeur”, “Destinataire”, “CP”, “Localité”, “Pays”, “UM”, “Poids “, “Date livraison”}),
SuppressionColsInutiles = Table.RemoveColumns(PermutationColNoBL,{“N° BL.1”, “N° BL.2”})
in
SuppressionColsInutilesCordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour Cyrielle, le Forum,
Pour la formule, je l’écrierais comme suit :
formule originelle
=+LIREDONNEESTABCROISDYNAMIQUE(“[Measures].[Somme de MONTANT COMPTABILISE PAPO PLURIANNUEL]”;’COMPTABILISE PL’!$Z$11;”[PAPO_Producteur_Export_prod].[CODE PRESTATION]”;”[PAPO_Producteur_Export_prod].[CODE PRESTATION].&[A4]”)formule corrigée
=+LIREDONNEESTABCROISDYNAMIQUE(“[Measures].[Somme de MONTANT COMPTABILISE PAPO PLURIANNUEL]”;’COMPTABILISE PL’!$Z$11;”[PAPO_Producteur_Export_prod].[CODE PRESTATION]”;”[PAPO_Producteur_Export_prod].[CODE PRESTATION].&[” & A4 & “]”)
la cellule A4 doit juste contenir le code prestationEn espérant avoir pu vous aider
Cordialement
Daniel15 décembre 2024 à 20 h 54 min en réponse à : Calcul d’une somme sur filtre dans power qwery #148710Daniel
ParticipantBonjour corentin.solignac2, le Forum,
Je pense que la requête suivante devrait répondre à votre attente, sauf qu’elle part de la 1ère ligne de vos données et le cumul se reporte pas à la semaine en cours .
Je n’ai pas su voir comment vous déterminer la semaine en cours donc voici ma proposition, qui j’espère vous mettra sur des pistes de solutions.
D’autres méthodes sont possibles, comme Liste.Accumulate mais je ne maîtrise pas encore bien cette fonction avec des conditions comme la semaine active.Requête
let
Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“semaine”, Int64.Type}, {“charge “, Int64.Type}, {“heures d’ouverture “, Int64.Type}}),
RenommerColonnes = Table.RenameColumns(ModificationTypeDonnees,{{“charge “, “charge”}, {“heures d’ouverture “, “heures d’ouverture”}}),
DiffCol = Table.AddColumn( RenommerColonnes,”Diff”, each [charge]-[#”heures d’ouverture”]),
Index = Table.AddIndexColumn(DiffCol, “Index”, 1, 1, Int64.Type),
AddListOfDiff = Table.AddColumn(Index,”ListOfDiff”, each DiffCol[Diff]),
AjoutCumul = Table.AddColumn(AddListOfDiff,”Cumul”, each List.Sum(List.Range([ListOfDiff],0,[Index]))),
SuppressionColonnes = Table.RemoveColumns(AjoutCumul,{“Diff”, “Index”, “ListOfDiff”})
in SuppressionColonnesFin de la requête
Cordialement
DanielDaniel
ParticipantBonjour aline.clozel, le Forum,
La requête ci-dessous liste toutes les lignes en doublons
let
Source = Csv.Document(File.Contents(“E:\Téléchargements\doublons_nemarchepas.csv”),[Delimiter=”;”, Columns=3, Encoding=65001, QuoteStyle=QuoteStyle.None]),
Modif_TypeDonnees = Table.TransformColumnTypes(Source,{{“Column1”, type text}, {“Column2”, type text}, {“Column3″, type text}}),
PromotionEntete = Table.PromoteHeaders(Modif_TypeDonnees, [PromoteAllScalars=true]),
RemplacerLesValeurs = Table.ReplaceValue(PromotionEntete,”’”,”‘”,Replacer.ReplaceText,{“nom_programme”}),
GrouperSurNomEtForme = Table.Group(RemplacerLesValeurs, {“nom_programme”, “forme_urbaine”}, {{“Nombre”, each Table.RowCount(_), Int64.Type}}),
FiltrerLignesSupà1 = Table.SelectRows(GrouperSurNomEtForme, each ([Nombre] <> 1))
in
FiltrerLignesSupà1Dans une des lignes du fichier CLOS DU CARDINAL il y a une ligne commençant par L’ et les trois autres par L’ (légère différence d’où l’écriture de la ligne RemplacerLesValeurs = Table.ReplaceValue(PromotionEntete,”’”,”‘”,Replacer.ReplaceText,{“nom_programme”})
Dans cette deuxième requête, nous supprimons les doublons
let
Source = Csv.Document(File.Contents(“E:\Téléchargements\doublons_nemarchepas.csv”),[Delimiter=”;”, Columns=3, Encoding=65001, QuoteStyle=QuoteStyle.None]),
Modif_TypeDonnees = Table.TransformColumnTypes(Source,{{“Column1”, type text}, {“Column2”, type text}, {“Column3″, type text}}),
PromotionEntete = Table.PromoteHeaders(Modif_TypeDonnees, [PromoteAllScalars=true]),
RemplacerLesValeurs = Table.ReplaceValue(PromotionEntete,”’”,”‘”,Replacer.ReplaceText,{“nom_programme”}),
SupprimerLesDoublons = Table.Distinct(RemplacerLesValeurs, {“nom_programme”, “forme_urbaine”})
in
SupprimerLesDoublonsEn espérant avoir répondu à vos questions
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour aline.clozel, le Forum,
Pour répondre à ta demande, la requête suivante supprime les doublons
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
Modif_TypeDonnees = Table.TransformColumnTypes(Source,{{“nom_programme”, type any}, {“forme_urbaine”, type text}, {“millesime”, type any}}),
Supp_DoublonsNomEtForme = Table.Distinct(Modif_TypeDonnees, {“nom_programme”})
in
Supp_DoublonsNomEtFormeMais pas contre dans l’exemple donne L’ECRIN DU CARDINAL, il subsiste encore deux lignes après cette requête
L’ECRIN DU CARDINAL et L’ECRIN DU CARDINAL
C’est comme ça que c’est écrit dans le fichier transmi, l’apostrophe ne me paraît pas être pareil.
Je n’ai pas regardé les autres cas éventuels, mais j’espère que cela vous donnera des pistes de reflexion.
Cordialement
DanielDaniel
ParticipantBonjour adrienblanc1,
J’ai essayé de répondre à votre demande, en espérant avoir compris la problématique, la réponse se trouve dans le fichier joint et je met la requête PowerQuery ci-dessous.
Je suis parti de deux tableaux (1 contenant les données et l’autre les dates de Bornes), la requête sera à adapter selon votre modèle de données.Requête
let
Source = Excel.CurrentWorkbook(){[Name=”tabBornes”]}[Content],
ModificationTypeBornes = Table.TransformColumnTypes(Source,{{“Bornes”, type date}}),
Borne2 = ModificationTypeBornes{0}[Bornes],
Borne3 = ModificationTypeBornes{1}[Bornes],
tabBornes = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
ModificatonTypeData = Table.TransformColumnTypes(tabBornes,{{“Participation”, type text}, {“Date”, type date}}),
Resultat = Table.AddColumn(ModificatonTypeData, “Personnalisé”, each if [Participation]=”Present” and [Date] < Borne2 then Source[Value]{0} else if [Participation]=”Present” and [Date] < Borne3 then Source[Value]{1} else null)
in
Resultat
Fin requêteEn espérant avoir pu vous aider
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour adrienblanc1,
Pourriez-vous donner plus de précisions sur les différentes valeurs des bornes 2 et 3?
Si cela peut être possible, un extrait du fichier serait le bienvenu afin d’être certain de répondre le plus précisément possible.
Cordialement
DanielDaniel
ParticipantBonjour Eric, le Forum,
En espérant avoir bien compris la demande, je propose la solution suivante.
let
Source = Excel.CurrentWorkbook(){[Name=”Jour_Exploitation”]}[Content],
GrouperLesSalles = Table.Group(Source, {“Salles”}, {{“AllRows”, each _, type table [Salles=nullable text, Dates=nullable datetime, Exploitation Début=nullable number, Exploitation Fin=nullable number]}}),
AjoutColResultat = Table.AddColumn(GrouperLesSalles, “Resultat”, each if List.Count([AllRows][Salles]) > 1 then Table.Skip([AllRows],1) else [AllRows]),
DevelopperResultat = Table.ExpandTableColumn(AjoutColResultat, “Resultat”, {“Dates”, “Exploitation Début”, “Exploitation Fin”}, {“Dates”, “Exploitation Début”, “Exploitation Fin”}),
SuppressionColonnes = Table.RemoveColumns(DevelopperResultat,{“AllRows”}),
ModificationTypeDonnees = Table.TransformColumnTypes(SuppressionColonnes,{{“Dates”, type date}, {“Exploitation Début”, type time}, {“Exploitation Fin”, type time}})
in
ModificationTypeDonneesSi cela ne répond pas à ce que vous attendez, serait-il possible de donner un exemple de résultat attendu ?
Cordialement
DanielDaniel
ParticipantBonjour Anne-Marie, le Forum,
En essayant la syntaxe suivante :
Statut = SWITCH(
TRUE,
NOT(ISBLANK([Date Achévement])), “Terminée”,
NOT(ISBLANK([Date Inscription])) && ISBLANK([Date Début]), “Inscrit non débuté”,
NOT(ISBLANK([Date Inscription])) && ISBLANK([Date Achévement]), “En cours”,
BLANK()
)
cela me donne le résultat suivant (voir fichier joint 20241016_AnneMarie.jpg) :Sinon on peut aussi créer la colonne dans Power query par deux façons de procéder (vérifier le temps d’exécution) comme suit :
1 – Simulation de la fonction Switch
let
Source = Excel.Workbook(File.Contents(“C:\Users\Daniel\OneDrive\Documents\Forums\CFO Masqué\AnneMarie_20241016.xlsx”), null, true),
tabData_Table = Source{[Item=”tabData”,Kind=”Table”]}[Data],
ModificationTypeDonnees = Table.TransformColumnTypes(tabData_Table,{{“Date Inscription”, type date}, {“Date Achévement”, type date}, {“Date Début”, type date}}),
StatutSwitch = Table.AddColumn(ModificationTypeDonnees, “Statut power Query”, each
let
Conditions = {
[Date Achévement] <> null,
[Date Inscription] <> null and [Date Début] = null,
[Date Inscription] <> null and [Date Achévement] = null},
Resultat = {“Terminée”,”Inscrit non débuté”,”En cours”}
in
Resultat{List.PositionOf(Conditions,true)}),
in
Statut_Switch2 – En créant une colonne conditionnelle
let
Source = Excel.Workbook(File.Contents(“C:\Users\Daniel\OneDrive\Documents\Forums\CFO Masqué\AnneMarie_20241016.xlsx”), null, true),
tabData_Table = Source{[Item=”tabData”,Kind=”Table”]}[Data],
ModificationTypeDonnees = Table.TransformColumnTypes(tabData_Table,{{“Date Inscription”, type date}, {“Date Achévement”, type date}, {“Date Début”, type date}}),
Statut_ColCond = Table.AddColumn(ModificationTypeDonnees, “Statut col conditionnelle”, each if [Date Achévement] <> null then “Terminée” else if [Date Inscription] <> null and [Date Début] = null then “Inscrit non débuté” else if [Date Inscription] <> null and [Date Achévement] = null then “En cours” else “Cas non prévu”)
in
Statut_ColCondEn espérant avoir pu vous aider.
Cordialement
DanielAttachments:
You must be logged in to view attached files.29 septembre 2024 à 18 h 59 min en réponse à : Regroupement de colonnes du type TCD dans PowerBI #146808Daniel
ParticipantBonjour cricri, le Forum,
Si ce n’est pas pour obtenir un rapport Power BI, alors en établissant ta requête dans EXCEL via Power Query (Menu Données, le choix entre diverses sources de données est possible fichier Excel, CSV, base SQL) ensuite en chargeant tes données obtenues après transformation éventuelle dans le modèle de données et en activant POWER PIVOT, il sera alors possible de créer un tableau croisé dynamique mais en gardant la possibilité de créer des mesures (notamment de temps avec une table de Dates).
Cordialement
DanielDaniel
ParticipantBonjour Jblan, le Forum,
Peut-être que la fonction DAX PREVIOUS pourrait répondre à votre besoin.
https://learn.microsoft.com/fr-fr/dax/previous-function-dax
Cordialement
Daniel26 août 2024 à 11 h 40 min en réponse à : Création de plusieurs colonnes personnalisées en une fois #145203Daniel
ParticipantBonjour Arnaud, le Forum,
Désolé du temps de réponse mais voici quelques explications ainsi que différentes requêtes permettant d’obtenir le résultat escompté, bien entendu tout est surement améliorable.Fichier Excel avec les requêtes
Fichier Word avec les différentes explicationsCordialement
DanielAttachments:
You must be logged in to view attached files.23 août 2024 à 23 h 29 min en réponse à : Création de plusieurs colonnes personnalisées en une fois #145164Daniel
ParticipantBonjour Arnaud, le Forum,
Merci de vos précisions et du fichier fourni.
J’ai adapté la requête afin d’être conforme au résultat souhaité. Je trouve une différence car par exemple pour le 01 juillet 2024, vous partez de la donnée de la ligne 26 auquel vous enlevez la donnée de la ligne 2. Pour moi, le 01 juillet 2024 commence à 00:00 et se termine à 23:59.
En espérant vous avoir aidé, et ce malgré cette légère différence de calcul, ne voyant pas de solution immédiate, je vais continuer à chercher.
Cordialement
DanielAttachments:
You must be logged in to view attached files.23 août 2024 à 13 h 28 min en réponse à : Création de plusieurs colonnes personnalisées en une fois #145072Daniel
ParticipantBonjour Arnaud, le Forum,
En espérant avoir bien compris la demande, je propose de regrouper les données
– par compteurs (toutes date confondues) et de calculer la différence entre la valeur mini du compteur et la valeur maxi du compteur
– par date (tous compteurs confondus) et là aussi calculer la valeur mini de la date et la valeur maxi de la date
Si cela ne répond pas à la demande, serait-il possible d’avoir un exemple de résultat souhaité, mais peut-être que cela pourra t’aider à trouver la réponse. Voir le fichier joint.
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour MLagrange, Le Forum,
En espérant t’aider avec ces deux formules
Heure minimale en fonction de la date de ton tableau TABLEAU
=INDEX(Tableau1[Temps];EQUIV(1;(Tableau1[Date]=G6)*(Tableau1[Temps]=MIN.SI.ENS(Tableau1[Temps];Tableau1[Date];G6));0))
Heure maximale en fonction de la date de ton tableau TABLEAU
=INDEX(Tableau1[Temps];EQUIV(1;(Tableau1[Date]=G6)*(Tableau1[Temps]=MAX.SI.ENS(Tableau1[Temps];Tableau1[Date];G6));0))
Il faut que les dates de tes données soient reportées dans la Partie TABLEAU, on pourrait peut-être utilisé les fonctions UNIQUE et FILTRE pour autant que votre version Excel soit compatible avec ces deux formules. Si c’est le cas, alors la formule serait :
=UNIQUE(FILTRE(Tableau1[Date];Tableau1[Date];”Pas de valeurs”))On peut aussi obtenir le même résultat en utilisant Power Query avec la requête suivante :
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“Temps”, type time}}),
// On groupe sur les dates et on utilise deux regroupement afin d’avoir les valeurs MIN et MAX de la colonne TEMPS
GrouperSurLesDates = Table.Group(ModificationTypeDonnees, {“Date”}, {{“De”, each List.Min([Temps]), type nullable time}, {“A”, each List.Max([Temps]), type nullable time}})
in
GrouperSurLesDatesCordialement
DanielAttachments:
You must be logged in to view attached files. -
AuteurMessages