Toutes mes réponses sur les forums
-
AuteurMessages
-
Xavier Allart
ParticipantBonjour
Comme vous pouvez, si il n’y a pas de données confidenciel dedans. Si non un tableau Excel avec les colonnes necessaires dossier, contrat de service, articles, … sur quelques lignes.
AmicalementXavier Allart
ParticipantBonjour
Est il possible d’avoir un jeu de données, ce serait plus facile pour vous aider.
Cordialement.Xavier Allart
ParticipantBonjour
En PowerQuery,
Selectionner la colonne avec le chemin du fichier
dans le menu Transformer ou Ajouter une colonne en fonction du besoin
utiliser la commande Extraire > Texte entre les délimiteurs :
Délimiteru du début : \
Délimiteur de fin : .
Options avancées
Rechercher le délimenteur de début : à partir de la fin de l’entréeCordialement
Attachments:
You must be logged in to view attached files.27 mars 2023 à 8 h 08 min en réponse à : Déterminer la date de fin de semaine à partir de l’année et du N° semaine #126960Xavier Allart
ParticipantBonjour
Je suppose que ton calendrier utilise les numéros de semaine à la norme ISO 8601. Dont l’une des Définitions de la première semaine de l’année ISO est la semaine du premier jeudi de l’année civile : Numérotation ISO des semaines — Wikipédia (wikipedia.org)Je vous propose la solution suivante en me basant sur le tuto suivant Créer une semaine ISO et une année ISO dans Power Query M (ISO 8601) (gorilla.bi)
Dont voici les étapes :
Date du premier jour de la semaine
Date du jeudi de la semaine en cours
Année du jeudi en cours
Date du 1er jeudi de l’année
Calculer du numéro de semaine ISO
Calculer la date du dimanche
Filtrer sur l’année du jeudi
Conserver les colonnes nécessaires et supprimer les autresVoici le code
let
Source = Excel.CurrentWorkbook(){[Name=”Annee2021″]}[Content],
//Date du premier jour de la semaine
Date.1erJour = Table.AddColumn(Source, “1erjour”, each Date.From(Date.AddDays(Date.FromText(Text.From([Année])&”-01-01″),([NumSemaine]-1)*7))),//Date du jeudi de la semaine en cours
Date.Jeudi = Table.AddColumn(Date.1erJour, “Jeudi”, each Date.AddDays( [1erjour],3 – Date.DayOfWeek( [1erjour], Day.Monday))),//Année du jeudi en cours
AnnéeJeudi = Table.AddColumn(Date.Jeudi, “AnnéeJeudi”, each Date.Year([Jeudi])),//Date du 1er jeudi de l’année
#”1erJeudiAnnée” = Table.AddColumn(AnnéeJeudi, “1erJeudiAnnee”, each Date.AddDays(
#date( [AnnéeJeudi],1 ,7 ),
– Date.DayOfWeek( #date( [AnnéeJeudi],1 , 1), Day.Friday )
)),//Calculer du numéro de semaine ISO
IsoNumWeek = Table.AddColumn(#”1erJeudiAnnée”, “IsoNumWeek”, each ( Duration.Days( [Jeudi] – [1erJeudiAnnee] ) / 7 )+ 1),//Calculer la date du dimanche
Date.Dimanche = Table.AddColumn(IsoNumWeek, “Dimanche”, each Date.AddDays([Jeudi],3)),//Filtrer sur l’année du jeudi
#”Colonne conditionnelle ajoutée” = Table.AddColumn(Date.Dimanche, “Personnalisé”, each if [Année] = [AnnéeJeudi] then 1 else null),
#”Lignes filtrées” = Table.SelectRows(#”Colonne conditionnelle ajoutée”, each ([Personnalisé] = 1)),//Conserver les colonnes nécessaires et supprimer les autres
#”Autres colonnes supprimées” = Table.SelectColumns(#”Lignes filtrées”,{“Année”, “IsoNumWeek”, “Dimanche”})
in
#”Autres colonnes supprimées”Cordialement
Xavier Allart
ParticipantBonjour
Voici une proposition
Ajouter une colonne d’index pour identifier chaque ligne
Sélectionner la colonne « Index » et dépivoter les autres colonnes
Dupliquer la colonne « Attibut » (Alpha, X.Alpha, Beta, …..)
Sélectionnez la colonne « Attribut – Copier » et remplacer « x. » par rien
Ajouter une colonne conditionnelle, pour identifier les 2 colonnes pour la soustraction à venir
Si « Attribut » commence « x. » alors « C2 » sinon « C1 »
Supprimer la colonne « Attribut »
Permuter les colonnes dans l’ordre : « index » « Attribut – Copier » « Personnalisé » « Valeur »
Sélectionner la colonne « Personnalisé » et dépivoter « Valeur »Cordialement,
Attachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Merci pour les données
Pour le graphique sont utilisées les tables « Stock_Metal », « Previsonnel metal » et « Dates »
« Stock_Metal » contient pour chaque article et par date (sur 100 jours calendaires avec ou sans consommation)
La quantité consommée « Conso_metal.Conso (G)»
Le stock restant en fin de journée « Total Stock Qty »
« Previsonnel metal » contient pour chaque article et par date (1 à 4 dates par article)
Le prévisionnel de consommation « Qté matière »
Les 2 tables ne contiennent pas les mêmes articles, les calculs de stocks sont donc à réaliser par date seulement
Les calendriers tiennent compte des week-ends et des jours fériés, pendant lesquels il n’y a pas de consommation. Les jours ne sont donc pas forcément consécutifs du jour au lendemain.Je vous propose donc la solution suivante :
Créer une nouvelle table permettant de connaître le dernier jour de consommation, avec le stock correspondant
Depuis la table « Stock_Metal » créer une nouvelle table par référence « X_Stock_Metal »
Cette table permet de connaître le dernier stock
Filtrer les lignes dont la conso > 0
Grouper par Date avec les sommes des Stock et de la Conso
Filtrer pour conserver la date la plus récente
Depuis la table « Previsionnel metal » créer une nouvelle table par référence « X_ Previsionnel »
Cette table permet d’identifier les 3 jours suivants la date dernier stock et de calcul le stock restant en fonction des besoins prévisionnels
Grouper par Date avec les sommes « Qté matière »
// Rechercher le dernier stock
Fusionner avec la table « X_Stock_Metal » sur les champs Date
Développer la colonne pour en extraire les champs « Time – Calendar day » et « Stock »
Remplir vers le bas les 2 colonnes
Supprimer les lignes non remplies
Supprimer la colonne « Time – Calendar day »
Ajouter un index
Supprimer la ligne d’index 0
// Calcul d’un stock temporaire
Pour J-1 « Stock-Besoin » pour les 2 autres jours « -besoin »
Supprimer les Stock et Index
// Calcul du stock restant pour les 3 jours (Tuto Somme Cumulative)
Ajouter une colonne « Lien » de valeur 1
Fusionner la requête avec elle-même sur le champ lien
Développer les colonnes Date et Stock
Filtrer les dates
Regrouper par Date et Besoin et calculer le stockPour le calcul de la somme cumulative, je me suis basé sur le tuto suivant :
En espérant avoir répondu à votre besoin
Cordialement,Attachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Sans jeu d’exemple donné, j’espère avoir compris le problème et apporté une réponse satisfaisante.
Je vous propose en PowerQuery de fusionner les 2 Tables et de calculer les stocks restants à j 0, j 1 et 1 2
Ce que j’ai réalisé sur la table Conso
Puis sur la table Conso (2) j’ai réorganisé la structure du tableau en dépivotant les colonnes
Voir le pbix en pièce jointe En powerquery ouvrir l’editeur avancé pour voir le code commenté.
Cordialement,let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45WMrDUNzDSNzIwMlbSUQrIL1FILzq8ohjINjEwAJIWYNIISMbqoCl2SkxWOLxAIS0ntbSoWKEgM7WoKBUobArWASFNsOvLS1bISixKycxTKElNzobbYoJbT0hRamZOTmJ6qkJuaVFiDopiiGUYWoIPr0xOLAG6Dep+GAmyKzYWAA==”, BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Articles = _t, #”J 0″ = _t, #”J 1″ = _t, #”J 2″ = _t]),
#”Type modifié” = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“Articles”, type text}, {“J 0”, Int64.Type}, {“J 1”, Int64.Type}, {“J 2″, Int64.Type}}),
// Ajout de 3 colonnes de stock en J0, J1, J2
// Ajouter une colonne personnalisée pour calculer la date du stock)
#”Personnalisée ajoutée” = Table.AddColumn(#”Type modifié”, “Date stock”, each Date.AddDays([Date],-1)),
// fusionner les 2 tables sur les champs Articles et Date
#”Requêtes fusionnées” = Table.NestedJoin(#”Personnalisée ajoutée”, {“Articles”, “Date stock”}, Stock, {“Articles”, “Date”}, “Stock”, JoinKind.LeftOuter),
// Développer la table pour en extraire le volume du stock
#”Stock développé” = Table.ExpandTableColumn(#”Requêtes fusionnées”, “Stock”, {“Stock”}, {“Stock”}),
// Ajouter 3 colonnes personnalisées pour calculer le volume de stock en J0, J1, J2
#”Personnalisée ajoutée1″ = Table.AddColumn(#”Stock développé”, “Stock 0″, each [Stock] – [J 0]),
#”Personnalisée ajoutée2″ = Table.AddColumn(#”Personnalisée ajoutée1”, “Stock 1″, each [Stock 0] – [J 1]),
#”Personnalisée ajoutée3″ = Table.AddColumn(#”Personnalisée ajoutée2”, “Stock 2″, each [Stock 1] – [J 2]),
#”Type modifié1″ = Table.TransformColumnTypes(#”Personnalisée ajoutée3”,{{“Stock 0”, Int64.Type}, {“Stock 1”, Int64.Type}, {“Stock 2″, Int64.Type}}),
// Dépivoter le tableau
// supprimer les colonnes inutiles
#”Colonnes supprimées” = Table.RemoveColumns(#”Type modifié1″,{“Date stock”, “Stock”}),
// Sélectionner les colonnes de référence “Date”, “Articles” et dépivoter les autres colonnes
#”Supprimer le tableau croisé dynamique des autres colonnes” = Table.UnpivotOtherColumns(#”Colonnes supprimées”, {“Date”, “Articles”}, “Attribut”, “Valeur”),
// Fractionner la colonne “Attribut” en 2 pour avoir une colonne avec Conso ou Stock et une autre avec les jours (0, 1, 2)
#”Fractionner la colonne par délimiteur” = Table.SplitColumn(#”Supprimer le tableau croisé dynamique des autres colonnes”, “Attribut”, Splitter.SplitTextByDelimiter(” “, QuoteStyle.Csv), {“Attribut.1”, “Attribut.2″}),
#”Type modifié2″ = Table.TransformColumnTypes(#”Fractionner la colonne par délimiteur”,{{“Attribut.1”, type text}, {“Attribut.2”, Int64.Type}}),
// Sélectionner la colonne “Attribut.1” Pivoter la table sur la colonne “Valeur”
#”Colonne dynamique” = Table.Pivot(#”Type modifié2″, List.Distinct(#”Type modifié2″[Attribut.1]), “Attribut.1”, “Valeur”, List.Sum),
// Renommer les colonnes
#”Colonnes renommées” = Table.RenameColumns(#”Colonne dynamique”,{{“J”, “Conso”}, {“Attribut.2”, “Jour”}})
in
#”Colonnes renommées”Attachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Sans jeu de données, je ne suis pas sûr de bien comprendre et de répondre à la question.
Je me suis donc créé un jeu d’essais sur lequel j’ai testé.
———-
des mesures DAX avec la fonction TREATAS qui fonctionnent bien dans des visuels graphiques, mais pas en table ou matrice.
Je me suis inspiré de l’article suivant au chapitre DAX Measure For Custom Bands : https://radacad.com/age-banding-in-power-bi-using-treatas-dax-function-relationship-based-on-between
———-
En power query et j’obtiens une nouvelle colonne “Tranche” dans ma table à partir de laquelle je peux réaliser les visuels et calculs que je veux.
Je me suis inspiré de l’article suivant au chapitre sur “Reproduire la fonction RECHERCHEV avec correspondance approximative dans Power Query” : https://www.lecfomasque.com/4-facons-de-reproduire-la-fonction-recherchev-dexcel-dans-power-query/
———-Voir en exemple le fichier power BI.
En espérant avoir aidé
cordialement,Attachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Sans jeu de données, je ne suis pas sur de répondre correctement à la question, mais la solution est peu être de réaliser un visuel de type matrice et dans les options de mise en forme choisir de placer les valeurs en lignes plutôt qu’en colonne. Voir la capture d’écran.
Cordialement,
Attachments:
You must be logged in to view attached files.3 février 2023 à 1 h 29 min en réponse à : Caractériser toutes les lignes d’une valeur si une des lignes a un critère #125170Xavier Allart
ParticipantBonjour
Pour cette autre solution, passer en power query
Dupliquer la colonne Rayon
Ajouter une colonne personnalisée nommée “Nb” et ayant comme formule =1
Sélectionner la colonne Rayon – Copie
Dans le Ruban Transformer > Pivoter la colonne
Colonne de valeurs : NbCordialement,
Attachments:
You must be logged in to view attached files.3 février 2023 à 1 h 14 min en réponse à : Caractériser toutes les lignes d’une valeur si une des lignes a un critère #125167Xavier Allart
ParticipantBonjour
Est-ce que la solution ne serait pas de réaliser selon le logiciel utilisé :
Excel : Un tableau croisé dynamique
Power BI : une matrice
Avec
en ligne : Tickets
en colonne : Rayons
en Valeur : Nombre de ticketsCordialement,
Attachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Sans un jeu d’exemple simplifié, c’est compliqué de comprendre le problème et de vous aider.
Je vous joins un exemple
Pouvez-vous indiquer quelle est la relation entre les 2 tables quels champs, ainsi que la cardinalité (1 à 1) (1 à *)Cordialement,
Attachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Voici un exemple avec l’ajout d’une colonne.
J’ai choisi d’afficher la valeur max si la date est aujourd’hui.
cordialementAttachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Je vous propose 2 solutions
Solution 1 necessite d’ecrire la requete en passant par l’editeur avancé
lien vers la source d’information : https://www.exceldemy.com/excel-power-query-running-total-by-group/Solution 2 avec les fonctionnalités de bases de Power Query: une fusion, un filtre, un regroupement.
lien vers la source d’information : https://www.lecfomasque.com/sujet/comment-faire-un-cumul-conditionnel-des-donnees-directement-dans-power-query/En piece jointe un classeur Excel avec les 2 solutions.
Cordialement
Attachments:
You must be logged in to view attached files.Xavier Allart
ParticipantBonjour
Votre besoin est d’ajouter une colonne Z, qui si la valeur de X est égale à zéro affiche Z sinon X
soit si on devait l’écrire avec Excel =SI(X=0;Z;X)En PowerQuery, il faut :
1) Ajouter une colonne
2) Choisir : Colonne conditionnelle
3) Nommer la Z
4) Sélectionner X comme nom de la colonne
5) Sélectionner égal à comme Opérateur
6) Saisir 0 comme Valeur
7) et 8) sélectionner la colonne Y comme Sortie
9) et 10) sélectionner la colonne X comme AutreVoir la capture d’écran en pièce jointe.
Cordialement,
Attachments:
You must be logged in to view attached files. -
AuteurMessages