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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    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 308
    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
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    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 562
    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
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    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 308
    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).

    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    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 562
    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)

  6. #6
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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 : 7431
Taille : 72,1 Ko

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

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

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

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

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

    Nom : 2020-04-01_193955.png
Affichages : 7305
Taille : 12,2 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    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 308
    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
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  9. #9
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    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 562
    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 308
    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 308
    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 : 7309
Taille : 23,8 Ko

    Nom : Capture2.PNG
Affichages : 7351
Taille : 11,9 Ko
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  11. #11
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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 : 7313
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 : 7297
Taille : 13,3 Ko

    Nom : 2020-04-01_215254.png
Affichages : 7310
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 : 7296
Taille : 12,1 Ko


    Mais attention, encore une fois, que le résultat différera de DateDif, ce qui pourrait être perturbant.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    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 308
    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
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  13. #13
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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 : 7239
Taille : 8,4 Ko


    Soit dans la fonction

    Nom : 2020-04-02_075741.png
Affichages : 8963
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 : 8946
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.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    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 308
    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
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  15. #15
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    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 562
    Par défaut
    Bonjour
    Citation Envoyé par Pierre Fauconnier Voir le message

    Nom : 2020-04-02_075741.png
Affichages : 8963
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 : 8946
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