IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

POWER Discussion :

[Power Query] Différence en mois entre deux dates


Sujet :

POWER

  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 198
    Points : 85 077
    Points
    85 077
    Billets dans le blog
    15
    Par défaut [Power Query] Différence en mois entre deux dates
    Salut,

    Tout est dans le titre, et après plusieurs recherches sur internet, je ne trouve pas comment faire la différence en mois entre deux dates.

    Des idées ?

    Merci

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Malick,

    J'espère que tu vas bien...

    Tu veux une date à x mois d'écart ou tu veux calculer l'écart en mois entre deux dates... Si c'est le second cas, tu peux donner un exemple? Tu veux des mois entiers ou décimaux?

  3. #3
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 513
    Points : 16 441
    Points
    16 441
    Par défaut
    Bonjour

    Avec une résultat similaire à une formule DATEFIF(Date1;Date2;"m") ?

    Sinon précise avec un exemple

    Edit Coucou Pierre

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Chris

    Oui, je pensais aussi à un DateDiff (existe en DAX mais j'ai pas l'impression que ça existe nativement dans les fonctions de Power Query)

  5. #5
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 198
    Points : 85 077
    Points
    85 077
    Billets dans le blog
    15
    Par défaut
    Salut Pierre et 78chris,

    Merci pour vos retour

    Désolé pour l'absence de précisions

    Avec une résultat similaire à une formule DATEFIF(Date1;Date2;"m") ?
    C'est bien cela 78chris, et comme évoqué par Pierre, en entier et en décimal (cela pourrait servir dans les calculs je pense).


  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 513
    Points : 16 441
    Points
    16 441
    Par défaut
    RE

    Cela n'existe par en natif

    J'ai trouvé cela qui donne le même résultat que DATEDIF, sans décimales donc, mais rien n'empêche de bricoler pour ajouter les jours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (((Date.Year([#""Date fin""]) - Date.Year([Date Début]))-1)*12)+
    (12-Date.Month([Date Début]))+(Date.Month([#""Date fin""]))
    - (if Date.Day([#""Date fin""])<Date.Day([Date Début]) then 1 else 0)

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bravo Chris, tu as été plus rapide. Merci, je me mets cela bien au chaud


    @Malick,

    Pour apporter ma modeste contribution, j'en ai fait une fonction...

    Pour la sauvegarder, soit tu as un compte Power BI et tu la sauvegardes dans ton compte, soit tu te la gardes dans un fichier texte pour la réutiliser dans d'autres fichiers...

    Nom : 2020-04-01_193717.png
Affichages : 6619
Taille : 72,1 Ko

    Nom : 2020-04-01_193755.png
Affichages : 6594
Taille : 72,2 Ko

    Nom : 2020-04-01_193817.png
Affichages : 6552
Taille : 8,8 Ko

    Nom : 2020-04-01_193834.png
Affichages : 6533
Taille : 9,5 Ko

    Nom : 2020-04-01_193904.png
Affichages : 6529
Taille : 19,2 Ko

    Nom : 2020-04-01_193937.png
Affichages : 6623
Taille : 12,8 Ko

    Nom : 2020-04-01_193955.png
Affichages : 6502
Taille : 12,2 Ko

  8. #8
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 198
    Points : 85 077
    Points
    85 077
    Billets dans le blog
    15
    Par défaut Merci
    Salut à tous,

    Superbes contributions de votre part, car d'autres en bénéficieront sans aucun doute, surtout avec la montée en puissance de Power Query

    Merci bien Pierre et 78chis

    Bone soirée

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 513
    Points : 16 441
    Points
    16 441
    Par défaut
    RE
    Citation Envoyé par Pierre Fauconnier Voir le message

    Pour apporter ma modeste contribution, j'en ai fait une fonction...
    Excellente idée

  10. #10
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 198
    Points : 85 077
    Points
    85 077
    Billets dans le blog
    15
    Par défaut
    Salut,

    Pierre en testant cette fonction, entre le 01/01/2010 et le 31/12/2020, il me renvoie 11 au lieu de 12

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (BeginDate as date, EndDate as date) =>
     
        let
        Result= 
            (((Date.Year(EndDate) - Date.Year(BeginDate))-1)*12)+(12-Date.Month(BeginDate))+
            (Date.Month(EndDate))-(
            if Date.Day(EndDate)<Date.Day(BeginDate) then 1 else 0)
        in Result
    Nom : Capture1.PNG
Affichages : 6508
Taille : 23,8 Ko

    Nom : Capture2.PNG
Affichages : 6554
Taille : 11,9 Ko

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Hé, moi, je n'ai fait que mettre la solution de Chris en fonction. Pour les éventuelles erreurs de calcul, tu frappes à la mauvaise porte... (C'est pour rire, hein, )

    Cela dit, la date finale est calculée le matin à 0:00, donc il n'y a pas tout à fait 12 mois, et donc, comme avec DateDiff, tu vas récupérer 11 mois complets... [Premier jour; Dernier jour[


    Nom : 2020-04-01_214734.png
Affichages : 6519
Taille : 2,0 Ko

    Donc, si tu veux que le dernier jour soit inclus, tu dois lui ajouter 1 , soit dans la formule de la colonne, soit dans la fonction.

    Attention, Dans PowerQuery, tout est objet, et une date n'est pas un nombre comme dans Excel, mais un objet Date, et un nombre n'est pas un nombre, mais un objet Int16, Int32, Int64... Le transtypage doit être explicite --- Et tant qu'on y est, PowerQuery est sensible à la casse!)


    Voici pour la formule...
    Nom : 2020-04-01_215155.png
Affichages : 6491
Taille : 13,3 Ko

    Nom : 2020-04-01_215254.png
Affichages : 6515
Taille : 7,8 Ko




    Voici pour la fonction (attention alors aux différences avec DateDif). Ca donne, en prime, la façon d'utiliser une variable interne à la fonction...

    Nom : 2020-04-01_220410.png
Affichages : 6499
Taille : 12,1 Ko


    Mais attention, encore une fois, que le résultat différera de DateDif, ce qui pourrait être perturbant.

  12. #12
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 198
    Points : 85 077
    Points
    85 077
    Billets dans le blog
    15
    Par défaut
    Salut Pierre,

    C'est Excellent, Nickel

    Merci beaucoup encore à vous tous pour l'idée.

    Bonne soirée

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Malick,

    Je dis que tout est objet dans PowerQuery puis je fais n'importe quoi derrière... Je n'ai pas encore les bons réflexes "Power Query"...

    Pour ajouter un jour à une date, on a bien entendu une fonction de la catégorie de dates... AddDays (autant s'habituer de suite à utiliser les techniques les meilleures )

    Soit dans la colonne formulée

    Nom : 2020-04-02_075537.png
Affichages : 6446
Taille : 8,4 Ko


    Soit dans la fonction

    Nom : 2020-04-02_075741.png
Affichages : 7985
Taille : 10,6 Ko



    De plus, on n'est pas obligé de passer par EndDate1, on peut ajouter 1 à EndDate, car comme en VBA, un argument de fonction est une variable interne à la fonction.

    Nom : 2020-04-02_083043.png
Affichages : 7965
Taille : 9,3 Ko



    C'est là qu'on voit que PowerQuery n'est pas tout à fait "Objet" mais plutôt "Orienté Objet" car normalement, en vrai POO, on aurait la méthode EndDate.AddDays 1, alors qu'ici, on utilise la fonction AddDays.

  14. #14
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 198
    Points : 85 077
    Points
    85 077
    Billets dans le blog
    15
    Par défaut
    Salut,

    Merci Pierre, bien vu

    Power Query que je découvre est formidable je trouve

    Merci encore

  15. #15
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 513
    Points : 16 441
    Points
    16 441
    Par défaut
    Bonjour
    Citation Envoyé par Pierre Fauconnier Voir le message

    Nom : 2020-04-02_075741.png
Affichages : 7985
Taille : 10,6 Ko

    De plus, on n'est pas obligé de passer par EndDate1, on peut ajouter 1 à EndDate, car comme en VBA, un argument de fonction est une variable interne à la fonction.

    Nom : 2020-04-02_083043.png
Affichages : 7965
Taille : 9,3 Ko
    Je reviens sur ce fil évoqué ailleurs aujourd'hui.

    Il semblerait qu'à l'intérieur d'une fonction, ne pas avoir 2 variables fasse une sorte de référence circulaire si on enlève le 1 de EndDate1 : on a une erreur non explicite sur des kilomètres qui plante PQ (en tout cas sur 365)
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/03/2015, 10h50
  2. Différence en nombre de mois entre deux dates
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/05/2007, 12h26
  3. Nombre de mois entre deux dates
    Par boulaxx dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 14/09/2006, 15h22
  4. [Dates] Les mois entre deux dates
    Par kagura dans le forum Langage
    Réponses: 2
    Dernier message: 28/06/2006, 11h38
  5. comment obtenir l’intervalle de mois entre deux date
    Par looc 6699 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2005, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo