Toutes mes réponses sur les forums
-
AuteurMessages
-
Stéphane Lorin
ParticipantArnaud
voici un exemple simplifié
J’ai une table de données et un TCD en résultant.
Je crée une table “En_cours” à coté du TCD qui reprend les valeurs + horodatagePuis je crée une requête PowerQuery que je nomme “Historique” qui récupère la table “En_Cours”
=Excel.CurrentWorkbook(){[Name=”En_Cours”]}[Content]
Je la charge dans un tableau (qui s’appelle donc “Historique”)Et maintenant je viens modifier la requête “Historique” en ajoutant :
= Excel.CurrentWorkbook(){[Name=”Historique”]}[Content]&Excel.CurrentWorkbook(){[Name=”En_Cours”]}[Content]
le & concatène l’historique avec les données en-cours.
Cordialement
Stéphane
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
En effet, un TCD n’est pas une table et vous ne pouvez pas récupérer dans une requête “interne” (Excel.CurrentWorkbook) les données d’une feuille.
Je n’ai pas testé mais techniquement je pense que c’est envisageable en passant par un classeur externe en faisant appel à votre propre classeur.
= Excel.Workbook(File.Contents(“Votre Chemin\Votre fichier.xlsx”), null, true)
Dans ce cas vous pouvez lire le contenu de votre feuille.
Mais il faut enregistrer le fichier entre l’actualisation du TCD et la mise à jour de la requête.Sinon, vous créez un tableau à coté de votre TCD avec votre date + un lien chaque cellule de votre TCD.
Pensez à ajouter l’heure si le TCD est actualisé plusieurs fois dans la même journée.A voir aussi si c’est vous seul qui utilisez le fichier, et faîtes les mises à jour.
Je trouve personnellement que ce n’est pas très propre “informatiquement” et un peu dangereux. Mais c’est un avis personnel !Stéphane
Stéphane Lorin
ParticipantBonjour
voici votre fichier avec une illustration des 2 solutions que je vous proposais dans mon message du 28 janvier
Par fusion puis différence et colonne conditionnelle
Par ajout de la table originale avec une table d’annulation (date + 7) puis regroupementje n’ai pas le temps de rentrer dans le détail des explications, vous pouvez analyser en détail les étapes dans la pièce jointe.
Cordialement
StéphaneAttachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
En DAX je ne sais pas, mais avec Power Query la fonction List.Random possède un second argument optionnel qui permet de générer la même liste à chaque fois
par exemple List.Random(20,6) générera toujours les 20 mêmes valeurs entre 0 et 1.
et List.Random(20,10) générera une autre liste de 20 valeurs.
Peut-être pouvez-vous ajouter une telle table à votre modèle de données ?Cordialement
Stéphane
Stéphane Lorin
ParticipantBonjour
Comme indiqué dans le cadre “Avant de poser une question sur ce forum…” c’est plutôt un petit fichier Excel “exemple” qui serait nécessaire
Avec vos trois tables simplifiées et anonymisées, les liaisons, vos essais de mesures…
Il n’est pas évident de deviner la structure de vos données et votre objectif.
Cela ne demande quelques minutes à concevoir mais ça simplifie le travail de ceux qui prennent sur leur temps personnel pour vous aidermerci
Stéphane
1 mars 2021 à 4 h 38 min en réponse à : Calculer le délai de travail entre deux dates Power BI (DAX) #87904Stéphane Lorin
ParticipantBonjour Enzo
regardez la pièce jointe de mon message du 15 janvier et ouvrez les requêtes Power Query.
vous comprendrez comment je gère les plages > à 1 jour et le regroupement pour additionner les valeurs quotidiennes.Cordialement
Stéphane
Stéphane Lorin
ParticipantBonjour
Avez-vous essayé avec les fonctions RELATED et SUMX ?
=SUMX(Vente;[budget]*RELATED(‘Taux gamme'[Taux budget]))La fonction SUMX va évaluer chaque ligne de la table (budget * taux associé à votre gamme) puis additionner l’ensemble.
Cordialement
Stéphane
Stéphane Lorin
ParticipantBonjour
Dans votre cas vous pourriez créer une première mesure pour calculer le nombre de ligne de votre table qui ont les mêmes 4 critères (le principe est de compter le nombre de lignes de la table lorsqu’on retire les filtres sauf les 4 champs qu’il faut conserver – fonction ALLEXCEPT)
CALCULATE(COUNTROWS(Tableau1);ALLEXCEPT(Tableau1;Tableau1[Nom du fournisseur];Tableau1[Ctre de profit];Tableau1[PIÈCES];Tableau1[Type]))
Puis vous créez une seconde mesure en ajoutant votre critère du nombre de caractères
CALCULATE(COUNTROWS(Tableau1);ALLEXCEPT(Tableau1;Tableau1[Nom du fournisseur];Tableau1[Ctre de profit];Tableau1[PIÈCES];Tableau1[Type];Tableau1[NB CAR]))
Si vos deux mesures sont différentes c’est qu’il faut valider la ligne
=IF([Mesure 1]<>[Mesure 2];”A Valider”;”OK”)Cordialement
Stéphane
Stéphane Lorin
ParticipantBonjour
Vous commencez par importer votre Tableau1 et votre Tableau4 dans Powerquery
Puis vous fusionnez la colonne “Code” du Tableau1 avec l’autre colonne “Code” du Tableau4.
Par défaut la jointure est “externe gauche” mais dans votre cas vous choisissez “Interne (Seules les lignes en correspondance)”.
Enfin vous supprimer la colonne ajoutée lors de la fusion.Stéphane
Stéphane Lorin
ParticipantBonjour
Pour ma part je n’ai pas de problème pour lire dans un fichier “A” des données provenant d’un fichier “B” même s’il est ouvert
Par contre des modifications effectuées dans le fichier “B” ne seront lisibles dans le fichier “A” qu’après enregistrement.
A l’intérieur d’un même fichier, la fonction Excel.CurrentWorkbook() lit le contenu d’un tableau “en direct” mais entre deux documents différents, Excel.Workbook() nécessite que le document source soit sauvegardé.
CordialementStéphane
16 février 2021 à 12 h 22 min en réponse à : Calculer le délai de travail entre deux dates Power BI (DAX) #87387Stéphane Lorin
ParticipantBonjour
Si je comprends bien vous bloquez après avoir récupéré les “H_Début” et “H_Fin” de la table “Type d’ouverture”.
J’ajoute ensuite 2 colonnes personnalisées (menu “ajouter une colonne”, “colonne personnalisée”)
La première pour faire le max entre le début de la plage étudiée et le jour + heure début du jour avec la fonction List.Max
La seconde pour faire le min entre la fin de la plage étudiée et le jour + heure fin du jour avec la fonction List.Min
Ensuite j’ajoute une troisième colonne personnalisée pour faire la différence entre les deux uniquement si elle est positive avec la formule
each if [Date_Heure fin] > [Date_Heure début] then [Date_Heure fin] – [Date_Heure début] else #duration(0,0,0,0)
J’obtiens ainsi la durée de ma plage sur le jour étudié.
Enfin je regroupe le tout en additionnant toutes les valeurs quotidiennes obtenuesEst-ce plus clair ?
Stéphane
Stéphane Lorin
ParticipantBonjour
Essayez
Text.Start([Votre colonne],Text.Length([Votre colonne])-2) &”00″
ou
Text.ReplaceRange([Votre colonne], Text.Length([Votre colonne])-2, 2, “00”)
Text.Length -2 ou -1 à tester car les positions dans PowerQuery commencent à 0Stéphane
Stéphane Lorin
ParticipantBonjour
je vous propose une solution avec Power Query
une première étape de regroupement par Date et Référence avec les agrégats :
– Somme de Quantité envoyée
– Somme de Quantité reçue
– “Toutes les lignes” mais je modifie dans le code en remplaçant each _, type table par each _[Utilisateur], type list afin de récupérer uniquement la liste des utilisateursune deuxième étape pour extraire les éléments de la liste (séparateur “,” par exemple) et enfin une dernière pour fractionner la colonne afin d’obtenir autant de colonnes que d’utilisateurs.
Voir ma proposition ci-jointe
Stéphane
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Avez-vous ouvert vos fichiers csv avec un éditeur type “Notepad++” afin d’analyser la structure d’un fichier qui fonctionne et celle d’un qui ne fonctionne pas ?
N’y a t-il pas des ” en plus ou des retours à la ligne (CR et/ou LF) ?
StéphaneStéphane Lorin
ParticipantBonjour
je ne comprends pas très bien l’utilité de votre calcul mais en tout cas la valeur que vous cherchez est égale à
Nb([Présent]=”Oui”)/Nb [Id] * Nb([Référence]=”Oui”)/Nb[Id]
Soit sous Excel par NB.SI.ENS(…) * NB.SI.ENS(…) / NB.SI(…)^2en DAX Nb([Présent]=”Oui”) peut se traduire par
COUNTROWS(FILTER(VotreTable,VotreTable[Présent]=”Oui”))Nb([Référence]=”Oui”) par COUNTROWS(FILTER(VotreTable,VotreTable[Référence]=”Oui”))
et Nb[Id] par COUNTROWS(VotreTable)
en créant une mesure égale au produit de deux premières sur le carré de la troisième je retrouve bien vos %Score de 32, 54 et 24%.
Cela fait un total de 110%. dans le cas précédent il fallait ensuite calculer 32/110, 54/110 et 24/110 pour avoir une somme de 100%Cordialement
Stéphane
-
AuteurMessages