Power Query : Plantage d'une fonction appelée dans une requête

Bonjour à toutes et tous !

Dans le cadre de mon apprentissage de Power Query, je bute sur un souci bien étrange.....

Une fonction, destinée à calculer le nombre de mois entre deux dates, remplit parfaitement son rôle, tests à l'appui....

Mais cette même fonction appelée dans une requête provoque une "erreur inattendue"....

Je joins une copie de mon fichier.

17pq-plantage.xlsx (15.71 Ko)

Bonjour,

Modifie ainsi :

StartDate as date, EndDate as date) as number =>
let
    EndDate2=  Date.AddDays(EndDate,1),
    DiffMois= (((Date.Year(EndDate2)- Date.Year(StartDate)-1)*12)
              + (12- Date.Month(StartDate))
              + Date.Month(EndDate2)
              - (if Date.Day(EndDate2)<Date.Day(StartDate) then 1 else 0))
in
    DiffMois

Bonjour à toutes et tous et bonjour Jean-Eric !

Merci, une fois encore, de vos précieux conseils !

Je note qu'il est préférable de ne pas modifier un argument de la fonction dans la fonction....

Cela me semble bien étrange d'autant que le test fonctionne parfaitement. C'est seulement à l'intégration de la fonction que le problème se situe.

Je vais prendre pour acquis ce fait car cela dépasse mes compétences du moment !

Merci encore !

Bonjour

Cela créait une référence circulaire en quelque sorte car contrairement au VBA, la requête va réinterpréter

EndDate= Date.AddDays(EndDate,1)

Dans le fil original, auquel j'avais participé, Pierre avait bien différencié la variable avant et après ajout d'un jour

Bonjour 78Chris,

Et merci de votre retour !

Bonne note est prise de votre explication qui sera mise à profit...

Je me suis laissé emporter par la précision "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." apportée par l'auteur de cette fonction dans le fil initial.

Rechercher des sujets similaires à "power query plantage fonction appelee requete"