Power Query - Création colonne avec des règles

Bonjour à tous,

Je suis bloqué sur un Powerquery les amis si vous pourriez m'aider.
Tableau 1 :
Historique des appels émis par numéro avec Date/heure d'appel.

NuméroDate et heure d'appel
331234567801/08/2025 09:10
331234567801/08/2025 12:10
331234567801/08/2025 11:10
332345678901/08/2025 09:15
332345678902/08/2025 10:15
332345678902/08/2025 14:15
332345678901/08/2025 17:00
337777777701/08/2025 19:00
337777777701/08/2025 19:30
337777777702/08/2025 10:30
337777777702/08/2025 12:30
337777777703/08/2025 14:30

Tableau 2 :

Fiche client avec Date/heure de création + numéro.

ID ficheNuméroDate et heure création
1331234567801/08/2025 09:00
2332345678901/08/2025 09:00
3337777777701/08/2025 12:00
4334444444401/08/2025 12:10

Le but, c'est de matché les dates/heures d'appels sur le tableau 2.

Les regles :
Il ne faut prendre que les dates/heures supérieur à la date de création.
ll faut que les date par collone sont par ordre croissant (par ordre d'appel).
Si il y a une fiche client mais pas d'appel effectués, on l'affiche mais avec vide (comme d'ID 4)

Résultat final :

ID ficheNuméroDate et heure création123456etc… (selon le nombre max d'appel)
1331234567801/08/2025 09:0001/08/2025 09:1001/08/2025 11:1001/08/2025 12:10
2332345678901/08/2025 09:0001/08/2025 09:1501/08/2025 17:0002/08/2025 10:1502/08/2025 14:15
3337777777701/08/2025 12:0001/08/2025 19:0001/08/2025 19:3002/08/2025 10:3002/08/2025 12:3003/08/2025 14:30
4334444444401/08/2025 12:10

La base est données comporte beaucoup de ligne, c'est pour ca que j'aimerais le faire avec Powerquery et pour ne pas perdre de donner aussi.

Merci d'avance.

Hello,

Une proposition

@+

Merci beaucoup, mais svp, possible de ne mettre que les heures d'appels supérieur à la date de création ? :)

Bonsoir à tous !

Une proposition ?

Bonjour,

Hello Baroute

Un essai (d'après un code de JFL )

let
    Source = Excel.CurrentWorkbook(){[Name="T_Base"]}[Content],
    Fusion = Table.NestedJoin(Source, {"Numéro"}, T_Appels, {"Numéro"}, "Tbl", JoinKind.LeftOuter),
    Expand = Table.ExpandTableColumn(Fusion, "Tbl", {"Date et heure d'appel"}, {"Date et heure d'appel"}),
    Filtre = Table.SelectRows(Expand, each [#"Date et heure d'appel"] > [Date et heure création] or [#"Date et heure d'appel"]=null),
    GroupBy = Table.Combine(
                            Table.Group(
                                        Filtre,
                                        {"ID fiche","Numéro", "Date et heure création"},
                                        {{"tbl", each Table.TransformColumns(
                                                                                Table.AddIndexColumn(_,"A",1),
                                                                                {{ "A", each "Appel " & Text.From(_)}}
                                                                            )
                                        }}
                                       )
                            [tbl]
                           ),
    Pivot = Table.Pivot(
                        GroupBy,
                        List.Distinct(GroupBy[A]),
                        "A",
                        "Date et heure d'appel"
                       ),
    ModType = Table.TransformColumnTypes(Pivot, List.Transform(List.Skip(Table.ColumnNames(Pivot),2), each {_, type datetime}))
in
    ModType

Le fichier :

15j-rak.xlsx (21.51 Ko)

Edit, suffit qu'on en parle... Hello JFL

Merci beacoup à vous tous, tous les fichiers marchent très bien.

Bonsoir à tous !

Bien.....

Je vous remercie de ce retour.

----> Ne pas oublier de passer le sujet en mode résolu ! (Important pour les recherches potentiellement identiques)

J'aimerais changer les sources et je bloque un peu si vous pourriez m'aider en MP svp.

Bonsoir à tous !

J'aimerais changer les sources et je bloque un peu si vous pourriez m'aider en MP svp.

Que signifie "changer les sources" ?

Structure différente de votre classeur exemple ? Source externe ?

Vous avez la possibilité de poster un classeur...... représentatif. (classeur anonymisé !)

Bonjour à tous,

J'ai un soucis que je n'arrive pas à résoudre si vous pourriez m'aider svp.

J'aimerais ajouter un critère mais je ne sais pas comment le faire, je suis bloqué depuis plusieurs semaines.

1-Les appels qui s'affiche doivent etre dans l'intervalle des AS. J'ai coloré en rouge les dates qui ne devraient pas s'afficher.

Le soucis actuel, le critère est uniqument supérieur aux appels sortants.

Toutefois, les appels devrait s'afficher uniquement entre deux AS.

par exemple, si j'ai 2 AS à 10h et 12h, et j'ai un AE à 13h, on l'affiche uniquement après 12h meme si 10h est inférieur à 13H.

2-les appels qui s'affichent sont uniquement les J et J+1 par rapport à l'AS.( si par exemple, l'AE est après 1 moins, on ne le prend plus en compte)

Merci d'avance de votre aide.

Bonjour à tous !

Une approche liée à ma compréhension du besoin....(????) :

Les notions AS et AE ne sont pas définies. Quelles sont les tables liées à ces concepts ?

La communauté est totalement ignorante de votre langage et de l'écosystème dans lequel vous évoluez.

Bonjour JFL et merci pour le retour,

J'ai déjà eu un retour de BAROUTE78, mais je vous envoie aussi le fichier de base et le résultat attendu au cas ou.

J'ai mis quelque explication pour que vous puissiez mieux comprendre mon besoin.

Merci d'avance

Bonjour à tous de nouveau !

Vous me remerciez sans avoir testé ma proposition......

Par ailleurs, dans la nouvelle mouture de votre fichier, la structure de vos sources est différente : Quid de l'ID fiche ?

Difficile de vous accompagner sans un minimum de rigueur...

Je m'excuse, je pensais que c'était le meme fichier.
Je viens de tester le fichier et ca marche très bien. Je vous remercie beaucoup.

Concernant l'ID fiche, on peut l'enlever et ne garder que les numéros et les date AS dans les résultats.

Bonjour à tous de nouveau !

Concernant l'ID fiche, on peut l'enlever et ne garder que les numéros et les date AS dans les résultats.

Ce qui importe, c'est de connaître la structure (stable) de vos sources. La requête sera adaptée en conséquence.

Bonjour à tous,

D'accord, Ci-joint le fichier avec les sources stables. Un onglet pour les AE et un onglet pour les AS.

Bonjour à tous !

Version 3 adaptée :

Merci pour le retour.

Toutefois en testant le fichier, je rencontre un petit bug.

Par exemple,

1- avec le numéro 322000024, il n'y pas de données AE dans la base pourTant le fichier sort un 20/01/2026 12:00

2- Ce numéro n'apparait que dans la base AE pourtant il s'affiche dans le resultat Power Query.

77777777 02/08/2025 10:30

Normalement, seul les données AS s'affichent sur le résultat, si il y a des AE qui corresponds on les affichent.

Bonjour à tous de nouveau !

Version 3 bis :

- Sélection des numéros : seuls les numéros "AS" sont intégrés dans la table finale.

- Modification nom champ : levée de l’ambiguïté (champ 1 et Date AS)

Bonjour

Sur la base du dernier fichier de JFL, voici une autre approche

let
    tAS = Excel.CurrentWorkbook(){[Name="tAS"]}[Content],
    Buffer_tAS = Table.Buffer(Table.Sort( tAS,{{"Numéro", Order.Ascending}, {"Date AS", Order.Ascending}})),
    tAE = Table.AddColumn(
             Excel.CurrentWorkbook(){[Name="tAE"]}[Content],
             "Date AS",
             (x) => Table.Last(Table.SelectRows(Buffer_tAS, each [Numéro]=x[Numéro] and [Date AS]<x[Date AE]))[Date AS]?),
    Jointure = Table.NestedJoin(tAS, {"Numéro", "Date AS"}, tAE, {"Numéro", "Date AS"}, "Join", JoinKind.LeftOuter),
    Date_AE = Table.AddColumn(
             Jointure,
             "Data",
             each Table.FromRows({{[Numéro],[Date AS]} & [Join][Date AE]}, {"Numéro", "Date AS"} & {"1"..Text.From(Table.RowCount([Join]))})),
    Combine = Table.Combine(Date_AE[Data])
in
    Combine

Ecart avec la solution de JFL sur 2 AE, à moins qu'une subtilité m'ait échappée

image image

Stéphane

EDIT
je vois que je n'ai pas pris en compte

2-les appels qui s'affichent sont uniquement les J et J+1 par rapport à l'AS.( si par exemple, l'AE est après 1 moins, on ne le prend plus en compte)

ajouter un critère au Table.Select.Columns pour que l'appel entrant du 3/8 ne soit pas rapproché de l'appel sortant du 1/8 car 2 jours = #duration(2,0,0,0))

= Table.AddColumn(Excel.CurrentWorkbook(){[Name="tAE"]}[Content],"Date AS", (x) => Table.Last(Table.SelectRows(Buffer_tAS, each [Numéro]=x[Numéro] and [Date AS]<x[Date AE] and [Date AS]>(x[Date AE]-#duration(2,0,0,0))))[Date AS]?)

Rechercher des sujets similaires à "power query creation colonne regles"