Grouper par identifiant unique avec colonne dates différentes

Accueil – Le CFO masqué Forums Power Query Grouper par identifiant unique avec colonne dates différentes

13 sujets de 1 à 13 (sur un total de 13)
  • Auteur
    Articles
  • #105632
    Judith Montminy
    Participant

    Bonjour,

    Chaque ligne est un prélèvement et est associé à un identifiant (une personne). Comme une même personne peut avoir eu plusieurs prélèvements, l’identifiant revient à plusieurs reprises avec des dates différentes. Voir image. J’aimerais pouvoir grouper par identifiant mais conserver toutes les dates de prélèvement de cette personne.

    Bref j’aimerais obtenir :
    Colonne 1 : Identifiant unique
    Colonne 2 : date prélèvement 1
    Colonne 3 : date prélèvement 2
    Colonne 4 : date prélèvement 3 etc.

    Ensuite, je pourrais faire des différences entre ses colonnes pour calcule le nombre de jours entre les différentes dates.

    J’ai pivoté, dépivoté, groupe par, j’y arrive pas. Quelqu’un peut m’aider svp?

    Merci beaucoup!

    Attachments:
    You must be logged in to view attached files.
    #105638
    JBruneau
    Participant

    Bonjour Judith
    Une solution rapide, peux-être pas élégante, serait d’ajouter une colonne de No_visite dans votre tableau si vos identifiants uniques soint classés par ID et de pivoter la colonne N0_visite colonne de valeur = Date et ne pas agréger.. Voir modèle ci-joint
    Bonne journée

    Attachments:
    You must be logged in to view attached files.
    #105640
    Judith Montminy
    Participant

    J’essaye cela à l’instant et je te tiens au courant. Merci!

    #105641
    Judith Montminy
    Participant

    Comment je fais pour numéroter mes visites de manière automatique?

    #105643
    JBruneau
    Participant

    Judith,
    Dans mon exemple j’ai rajouté une colonne avec une formule simple de numérotation. ( voir la table dans excel). Le prérequis est que les items soient classés par numéros d’identifiant.
    J’imagine qu’il serait aussi possible de rajouter la colonne a même la requête via du code M si on veut s’éviter la tâche d’ajouter manuellement la formule dans les cas ou les donnes de bases sont rafraichies régulièrement. Il y a certainement des personnes plus versées en M que moi pour ce faire cependant.
    Ma solution est plutôt du genre vite fait pour une utilisation sporatique.
    J’espères que cela va t’aider !
    Salutations

    #105647
    Judith Montminy
    Participant

    Merci beaucoup pour ton aide, c’est en effet mon problème, il s’agit d’un fichier qui est mis à jour quotidiennement, donc je ne veux pas ajouter rien à mon fichier directement, je voulais toute mettre dans power query. Il y a certainement une façon de faire, je vais continuer de chercher, mais si d’autres connaissent la réponse, je suis preneuse. Merci!|

    #105648
    JBruneau
    Participant

    Voila un dernier essai.. pas brillant en M mais cela fait la job en attendant la solution ideale que j’aimerais connaitre aussi !
    Je fusionne les index pour obtenir la valeur de l’ID précédente et calcule le num de RDV dans la table obtenue. Comme cela elle devrait etre a jour lorsque la requete initiale est mise à jour puisque la formule est dans la table.
    Le TCD triche un peu mais donne le resultat escompté avec mes données.
    Bonnes chance!

    Attachments:
    You must be logged in to view attached files.
    #105696
    Judith Montminy
    Participant

    Salut,
    Je pensais qu’on y était, mais je reste prise au niveau de la formule que tu ajoutes direct dans excel, je peux pas le mettre dans power query. J’arrive pas à faire D1+1, il ne traite pas les lignes, juste les colonnes. Merci pour ton aide, je continue mes recherches.

    #105701
    JBruneau
    Participant

    Judith Finalement ma premiere solution était la plus simple mais elle marche..
    -Tu fais une requete pour obtenir les données de ta table en 2 colonnes comme dans ton exemple et tu charge dans ta feuille
    -tu ajoutes à la table généree une colonne calculée.. elle va toujours se mettre a jour car elle est ajoutée dans la table..pas dans tes données sources , donc à chaque mise à jour de la table de base, les formules suivent toujours sans avoir à les remanipuler. Attention a utiliser les adresses de type A1 et non pas les adresses de tables @[
    – Tu fais ou bien un TCD traditionnel comme dans mon exemple 2 ou tu peux refaire une requête basée sur la table qui contient le RDV avec le dépivot..
    C’est simple et cela marche a tout coup.. Moins élégant mais bon, faut ce qu’il faut.. j’ai des tables comme cela qui marchent depuis des années sans interventions autres que MAJ…
    Bonne chance!

    #105711
    Judith Montminy
    Participant

    J’ai réussi avec ton truc de colonne d’index, j’en ai fait 5 qui commence toute 1 plus loin, pis après j’ai fait une colonne conditionnelle. Selon moi, c’est pas la méthode la plus cute et efficace, mais ca marche!

    Un énorme merci pour ton aide!

    #105739
    Daniel
    Participant

    Bonjour Judith, JBruneau, Le Forum,

    Avec la requête Power Query ci-dessous on arrive directement au résultat du TCD. Il reste cependant un problème de formatage des dates si plus de 4 rendez-vous possibles.
    Voici la requête :
    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“ID”, type text}, {“Date”, type date}}),
    #”Lignes groupées” = Table.Group(#”Type modifié”, {“ID”}, {{“AllData”, each _, type table [ID=nullable text, Date=nullable date]}}),
    Personnalisé1 = Table.AddColumn(#”Lignes groupées”, “SerialNumber”, each Table.AddIndexColumn([AllData],”SNum”,1,1)),
    #”SerialNumber développé” = Table.ExpandTableColumn(Personnalisé1, “SerialNumber”, {“Date”, “SNum”}, {“Date”, “SNum”}),
    #”Colonnes supprimées” = Table.RemoveColumns(#”SerialNumber développé”,{“AllData”}),
    #”Colonne dynamique” = Table.Pivot(Table.TransformColumnTypes(#”Colonnes supprimées”, {{“SNum”, type text}}, “fr-FR”), List.Distinct(Table.TransformColumnTypes(#”Colonnes supprimées”, {{“SNum”, type text}}, “fr-FR”)[SNum]), “SNum”, “Date”),
    #”Type modifié1″ = Table.TransformColumnTypes(#”Colonne dynamique”,{{“1”, type date}, {“2”, type date}, {“3”, type date}, {“4″, type date}})
    in
    #”Type modifié1”
    Cordialement
    Daniel

    #105752
    Judith Montminy
    Participant

    WOW, c’Est en plein ca que je voulais!
    Merci, merci merci! Ca fonctionne à merveilles même avec plus que 4 rendez-vous par ID.

    Merci encore!

    #105766
    JBruneau
    Participant

    Super Daniel! je n’avais pas pensé a cela !
    Merci!

13 sujets de 1 à 13 (sur un total de 13)
  • Vous devez être connecté pour répondre à ce sujet.