Microsoft 365 Extraction de données sans doublon très complexe

stephvico

XLDnaute Nouveau
Bonjour à tous,

Cela fait un bail que je ne suis pas venu à mon regret.

Voilà j'ai une problématique que j'ai essayé de résoudre en cherchant sur le Forum mais en vain...

Donc je vous l'expose ici :

J'ai une liste de commande qui est en transit sur un bateau et peut rester sur 2 années et 4 mois en Transit exemple du 25/11/2023 au 01/02/2024 pour autant cette marchandise ma commande ne doit apparaître qu'une seule fois dés qu'elle commence son Transit et non compté 4 fois

J'ai déjà Essayé les moyennes en résultat mais dans ma base cela ne me va pas dés lors que je fais un TCD regroupé par Saison je mets ci-dessous ma base en image et l'attendu en image, je joins également le fichier Excel.

La base de données en exemple
Base données.png


Et mon attendu

Attendu Base données.png


Merci de votre aide

Steph
 

Pièces jointes

  • Exemple Pour extraire valeur unique dés le premier trouvé.xlsx
    12 KB · Affichages: 10

alexga78

XLDnaute Occasionnel
Bonjour à Tous,

Avec Power Query.
VB:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped" = Table.Combine(Table.Group(Source, {"MARCHE"},
    {{"x", each Table.FirstN(Table.Sort(_, {"Année/ Mois", 0}),1)}})[x])
in
    #"Grouped"

Bonne journée
 

merinos

XLDnaute Accro
Bonjour @stephvico

Je vois 2 solutions possibles: PowerQuery et une formule matricelle

Pour la formule matricelle , j'ai employé une fonction LAMBDA... ce qui reduit l'écriture de la formule
 

Pièces jointes

  • Exemple Pour extraire valeur unique dés le premier trouvé.xlsx
    23.7 KB · Affichages: 4

stephvico

XLDnaute Nouveau
Bonjour à Tous,

Avec Power Query.
VB:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped" = Table.Combine(Table.Group(Source, {"MARCHE"},
    {{"x", each Table.FirstN(Table.Sort(_, {"Année/ Mois", 0}),1)}})[x])
in
    #"Grouped"

Bonne journée
Bonjour Alexga78:

J'ai essayé dans Query mais j'ai une erreur,

En fait j'ai déjà créer une table qui rassemble X fichier afin de tout compiler appelé "Compil Transit"

Source = #"Compil Transit"
#"Grouped" = Table.Combine(Table.Group(Source, {"MARCHE"},
{{"x", each Table.FirstN(Table.Sort(_, {"Année/ Mois", 0}),1)}})[x])
in
#"Grouped"

Mais j'ai une erreur Expression SyntaxError : Jeton attendu

je ne comprends pas
 

alexga78

XLDnaute Occasionnel
Merci j'ai modifié ça à l'air de fonctionner pas de message d'erreur mais Power Query tourne depuis 1 heure il a l'air de mettre un peu de temps certainement lié à la volumétrie de données que j'ai
Stephvico,
une heure c'est bien trop!
Ta requète #"Compil Transit" fait elle de nombreuses modifications ?
un fichier exemple, sans données sensibles, des données à compiler serait utile.
 

stephvico

XLDnaute Nouveau
Stephvico,
une heure c'est bien trop!
Ta requète #"Compil Transit" fait elle de nombreuses modifications ?
un fichier exemple, sans données sensibles, des données à compiler serait utile.
Je vais voir justement pour envoyer sans données sensibles,
Mais requête ne fait aucune modification juste elle compile 4 années de données qui font un total de 54 716 Lignes je ne comprends pas trop
 

dysorthographie

XLDnaute Accro
Bonjour,
désolé j'ai pas accès à Power Query
VB:
Sub test()
Dim Cn As String, Sql As String, Rs As Object
Cn = GenereCSTRING(Xls, Base:=ThisWorkbook.FullName, Titre:=True)
With ThisWorkbook.Sheets("dysorthographie")
    With .ListObjects("dysorthographie")
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
    End With
    Sql = "select FIRST([Année/ Mois]),FIRST([saison]),[MARCHE],[incoterm],[montant_marchandise] ,FIRST([Année]),FIRST([Mois])" & _
    "from [Base$] GROUP BY [MARCHE],[incoterm],[montant_marchandise]"
    .Range("A2").CopyFromRecordset ExecuteRequete(Sql, Cn)
    .Activate
End With
End Sub
 

Pièces jointes

  • Exemple Pour extraire valeur unique dés le premier trouvé.xlsb
    41.5 KB · Affichages: 6

Efgé

XLDnaute Barbatruc
Bonjour à tous,
J'ai ouvert le fichier mais j'ai un peu de mal à reproduire la formule dans mon fichier car quand je veux copier la formule elle disparait
La formule a copier est en $M$1 de mon exemple:
VB:
=LET(
EnT; Data[#En-têtes];
Mrch;Data[MARCHE];
Val;INDEX(Data;EQUIVX(UNIQUE(Mrch);Mrch;0);EQUIVX(EnT;EnT;0));
ASSEMB.V(EnT;Val)
)

Avec un tableau structuré nommé "Data"

Cordialement
 

stephvico

XLDnaute Nouveau
Bonjour,
Je continue sur ce fil car j'ai une autre problématique en fait j'ai également des données, j'ai pour mes besoins d'avoir chaque article et commande qui compose mon numéro de conteneur dans le bateau... ce qui multiplie le nombre de ligne jusque ici pas de soucis, sauf que j'aimerai pouvoir assez facilement ajouter une colonne dans Query qui compte 1 pour un conteneur et non 3 si j'ai 3 lignes qui composent les éléments du conteneur...
J'espère être assez explicite, le besoin final est de pouvoir avec la même base compter le nombre de numéro conteneur et pas le nombre de ligne qui compose mon conteneur...

Attendu Nombre Conteneur.png







Stéphane
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 698
Messages
2 112 003
Membres
111 388
dernier inscrit
ABBM