Toutes mes réponses sur les forums
-
AuteurMessages
-
Stéphane Lorin
ParticipantBonjour
Il faut dans un premier temps ajouter un index à votre table (à partir de 1 ou de 0 – j’ai choisi ici 1)
CODE PROD | CONDITMT | PRIX | Index
000001 | 1| 20.00 | 1
000001 | 10| 18.00 | 2
000001 | 100| 15.00 | 3
000002 | 1| 25.00 | 4Puis faire référence à cette table en regroupant par CODE PROD et en retenant le “min” de Index
CODE PROD | MinIndex
000001 |1
000002 |4Puis fusionner les deux tables sur le CODE PROD
CODE PROD | CONDITMT | PRIX | Index |MinIndex
000001 | 1| 20.00 | 1 | 1
000001 | 10| 18.00 | 2 | 1
000001 | 100| 15.00 | 3 | 1
000002 | 1| 25.00 | 4| 4et enfin faire la différence entre Index et MinIndex + 1
CODE PROD | CONDITMT | PRIX | Index |MinIndex | Différence
000001 | 1| 20.00 | 1 | 1 | 1
000001 | 10| 18.00 | 2 | 1 | 2
000001 | 100| 15.00 | 3 | 1 | 3
000002 | 1| 25.00 | 4| 4 | 1Cordialement
Stéphane
Stéphane Lorin
ParticipantBonjour
Et si vous avez 10, 20 ou plus de seuils, vous n’allez pas écrire une formule avec autant de SI
La fonction EQUIV(..;..;1) est utile dans cette situation :Vous avez une table avec les seuils dans l’ordre croissant (le 1 du EQUIV permet de renvoyer le premier seuil inférieur à la valeur cherchée)
Table_Seuil :
Seuil Libellé
0:00:00 <=4
4:00:00 <=8
8:00:00 <=12
12:00:00 <=24
24:00:00 <=48
48:00:00 >48A noter que j’ajoute 10^-9 aux heures pour gérer le <= et non le < strict
=”04:00:00″+10^-9Un INDEX combiné à un EQUIV(..;..;1) me donne le résultat souhaité
=INDEX(Table_Seuil[Libellé];EQUIV([@Valeur];Table_Seuil[Seuil];1))Cordialement
Attachments:
You must be logged in to view attached files.19 septembre 2019 à 7 h 35 min en réponse à : [power BI] colonne calculée à partir de plusieurs colonnes et lignes #58051Stéphane Lorin
ParticipantBonjour
D’après ce que vous dites, les “Order” ont d’abord le statut “Authorization” puis ensuite “capture” ou “reversal”.
Il y a donc une incohérence avec les lignes 9, 10 et 11 qui sont datées du 2/9 en “Authorization” et qu’on retrouve en lignes 55,56 et 57 datée du 1er mais en “reversal”.Sinon, un simple RECHERCHEV sur les 2 premières colonnes répond à votre problématique =RECHERCHEV(A2;A:B;2;0) à adapter pour gérer les cas où il y a des “null” avec un SI
Pour Power BI (votre titre), Power query la solution que je proposais le 18 devrais fonctionner.
Cordialement
Stéphane
Stéphane Lorin
ParticipantBonjour
dans un premier temps je fractionnerai la colonne sur les , en choisissant l’option avancée “lignes” ; puis un second fractionnement sur les : avec l’option “colonne” cette fois ; enfin nettoyer les [, {, ”
Stéphane
Attachments:
You must be logged in to view attached files.18 septembre 2019 à 2 h 06 min en réponse à : [power BI] colonne calculée à partir de plusieurs colonnes et lignes #58035Stéphane Lorin
ParticipantBonjour
Si j’ai bien compris votre problématique, il faut dans un premier temps filtrer la table sur le champ “Auth Status” = “Authorization” avec Power Query et supprimer les doublons de n° order (ligne 22, 23 par exemple) puis fusionner votre table initiale avec cette table filtrée et développer la date.
Voir le fichier jointStéphane
Attachments:
You must be logged in to view attached files.14 septembre 2019 à 16 h 27 min en réponse à : Comment faire un cumul conditionnel des données directement dans Power Query ? #57980Stéphane Lorin
ParticipantBonjour
Il ne faut pas être déçu par Power Query, c’est vraiment super puissant.
Vous trouverez en exemple une liste de 100 produits avec 10 mois d’historique de CA soit 1000 lignes et en une fraction de seconde vous obtenez le CA cumulé en utilisant des fonctionnalités de bases de Power Query: une fusion, un filtre, un regroupement.Je fusionne la table avec elle-même sur le champ [Produit] et je développe les champs [Mois] et [CA] j’ai donc : [Produit], [Mois], [CA], [Mois.1] et [CA.1] avec chaque mois dupliqué soit 10 000 lignes car il y a 100 produits x 10 mois x 10 mois.
je filtre pour conserver uniquement les [Mois.1] <= [Mois] (votre condition)
enfin je regroupe sur les champs [Produit], [Mois] et [CA] pour retrouver mes 1000 lignes initiales en sommant le champ [CA.1] pour avoir le CA cumuléJe contrôle que j’obtiens bien le même résultat qu’avec une fonction SOMME.SI.ENS.
Stéphane
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
sur le fond en version française et en remplaçant YYYY par aaaa et DD par jj j’ai obtenu le résultat souhaité. Peut-être faut-il retirer le T00:00:00 de la fonction TEXT et le mettre dans le “T00:00:00]”
sur la forme : un ficher de 1,5 Mo pour un cas comme le vôtre indique des données cachées qu’il faudrait je pense retirer d’un forum (onglet masqué).
Cordialement
Stéphane12 septembre 2019 à 2 h 53 min en réponse à : Cherche une formule pour occurence d'une donnée #57936Stéphane Lorin
ParticipantBonjour
Voici un exemple qui est peut-être similaire à votre problématique :
soit une liste de projets dans une table “Liste_projets” et les champs : “N°” et “Nom_équipes” (avec les noms séparés par des virgules)
N° Nom_Equipes
1 A
2 A,B
3 B,C
4 D
5 D,A
6 Bpour lister les projets concernant le nom de l’équipe en cellule A1 :
=JOINDRE.TEXTE(“,”;VRAI;
SI(ESTNUM(CHERCHE(A1;Liste_projets[Nom_Equipes]));Liste_projets[N°];””)
)à valider en matricielle CTRL+MAJ+ENTREE
si A en A1, la liste donnera 1,2,5
si B vous aurez 2,3,6
si E vous aurez une liste vide car cette équipe ne contribue à aucun projetStéphane
Stéphane Lorin
ParticipantBonjour
Dans un tableau excel avec la colonne “N° Semaine” au format 15.2019
Le 1er janvier est donné par “1erJA” =DATE(DROITE([@[N° semaine]];4);1;1)
En Europe tout du moins, la semaine 1 est celle qui contient le 1er jeudi de l’année. il faut donc tester le jour de la semaine du 1er janvier puis ajouter 7 fois le n° de la semaine pour avoir le lundi de la semaine voulue.
Le lundi de la semaine du 1er janvier est obtenu par la formule =[@1erJA]-JOURSEM([@1erJA];3)
en ajoutant 7*(GAUCHE([@[N° semaine]];2)-(JOURSEM([@1erJA];3)<4)) on obtient le lundi de la semaine (on retire 1 au n° de la semaine si le 1er janvier est un lundi, un mardi, un mercredi ou un jeudi).A adapter sous PowerQuery avec le 1er janvier = Date.FromText(“01/01/”&Text.End([#”N° semaine”], 4)), la fonction Date.DayOfWeek et une formule conditionnelle suivant le jour du 1er janvier.
Cordialement
Stéphane12 juin 2018 à 3 h 18 min en réponse à : Comment traduire avec PowerQuery une recherche avec les caractères joker #46637Stéphane Lorin
ParticipantMerci Sophie pour votre retour
Dans mon cas je dois faire correspondre une table de milliers de codes alphanumériques de 6 à 8 caractères avec une autre table d’environ 500 règles (du style AB12* ou AB*12 ou encore AB?1*). Ma fonction matricielle avec 2 EQUIV imbriqués est très efficace, je vais la conserver sans chercher à le faire sous Power Query.Merci pour votre lien vers le blog de Chris Webb. Peut-être y aura-t-il en effet une fonction LIKE dans PowerQuery ?
En tout cas un grand bravo pour votre site et votre travail.
Stéphane
9 mai 2018 à 4 h 08 min en réponse à : Imbrication de texte de plusieurs lignes selon un critère #43025Stéphane Lorin
ParticipantBonjour
Je ne sais pas si pas peux être utile dans votre cas mais la formule sous excel (hors Power Query) pourrait être en colonne3 :
=CONCAT(SI([Colonne1]=[@Colonne1];[Colonne2];””)) en matricielle (validation CTRL + MAJ + ENTREE)
Stéphane19 mars 2018 à 7 h 52 min en réponse à : Tableau Excel avec données avec saut de ligne dans 1 cellule #41817Stéphane Lorin
ParticipantBonjour
Dans le tableau, une piste de réflexion pour extraire la première heure :
=SIERREUR(GAUCHE([@[Heure de la demande]];TROUVE(CAR(10);[@[Heure de la demande]])-1);[@[Heure de la demande]])et pour la seconde heure :
=SIERREUR(STXT([@[Heure de la demande]];TROUVE(CAR(10);[@[Heure de la demande]])+1;99);””)procéder de même pour les autres colonnes
Sous PowerQuery une idée serait de fractionner les colonnes par délimiteur : #(lf) en cochant la case “Diviser en utilisant des caractères spéciaux” puis fusionner les colonnes ainsi séparées avec un séparateur choisi et dépivoter les lignes de TCD en choisissant ces colonnes puis fractionner les colonnes fusionnées dans l’autre sens.
Cordialement
Stéphane
Stéphane Lorin
ParticipantBonjour
Une idée pour compter le nombre de * dans une chaîne
=NBCAR(A1)-NBCAR(SUBSTITUE(A1;”*”;””))
Text.Length([Colonne1])-Text.Length(Text.Replace([Colonne1],”*”,””))
Stéphane
-
AuteurMessages