Tâches qui ont un dbt/fin/charge : calcul de charge sur un mois

Bonjour,

J'ai plusieurs tâches avec des dates de début, et une charge par jour ouvré associé.

J'aimerai calculer, avec un sommeprod et sans en faire plusieurs, la charge sur un mois précis pour les tâches qui correspondent à la période.
Particularité, c'est la charge restante, donc sur ce mois d'aout par exemple, si une tâche a démarré avant aujourd'hui, je veux la charge restante entre aujourd'hui et la fin de période (31/08)

J'arrive à sélectionner les bonnes tâches

--(taches[Début]<I4); //I4 étant le début de la période suivante, je fais aussi du mois.decaler([@DbtPériode];1)--(taches[Fin]>=taches[today]);--(taches[Fin]>=[@DbtPériode]);

Mais, dans le somme prod, mon calcul de jour ouvrés avec des min/max ne fonctionne pas ... cela me renvoi le même nombre de jour pour tous les mois, alors que cela ne devrait pas au vu de mon jeux de donnée.

Dans la version du fichier joint, j'ai même un soucis de formule que je n'ai pas sur ma feuille de prod.

J'arrive à bout. Au début j'avais séparé tous les cas en fonction de

  • si la tâche débute avant la période et fini pendant (nb.jours.ouvre(dbt_periode;fin_tache))
    • ou si aujourd'hui est supérieur à la date de début de période (nb.jours.ouvre(aujourd'hui();fin_tache))
  • si la tâche débute avant la période et fini après (nb.jours.ouvre(dbt_periode;fin_periode))
  • ...

cela me faisait 6 cas avec des conditions pour rentrer dans telle ou telle sommeprod ... mais après plusieurs heures de boulot, de jeux de tests, de débbuggage ... j'avais tjs des erreurs...

Merci... je commence à manquer de cheveux sur la tête à ce rythme !

Bonsoir,

Une proposition, si j'ai bien tout compris.

Cordialement

Bonsoir Zebulon2

Alors de ce que je vois vous avez fait, pour chaque tâche, la charge associée totale sur la période de temps.

Mois, c'est plus le tableau2 et son contenu qui m'intéresse. Je reformule mon besoin : je souhaite, par mois, savoir la charge totale que je vais avoir, à partir d'une liste de tâche.

Donc, en août, quelle charge totale vais-je avoir ? Pour cela, faut donc pour chaque tâche savoir le nombre de jour ouvré sur la période qui m'intéresse (mois par mois) et le multiplier par la charge par jour ouvré (charge / JO).

re,

Pas tout compris

Particularité, c'est la charge restante, donc sur ce mois d'aout par exemple, si une tâche a démarré avant aujourd'hui, je veux la charge restante entre aujourd'hui et la fin de période (31/08)
Donc, en août, quelle charge totale vais-je avoir ? Pour cela, faut donc pour chaque tâche savoir le nombre de jour ouvré sur la période qui m'intéresse (mois par mois) et le multiplier par la charge par jour ouvré (charge / JO).

Un exemple vaut mieux que 1000mots je crois pour ce que je cherche à faire.

J'ai fait une feuille 2 qui donne le résultat que je veux, mais pas de la manière que je souhaite (faisable dans cet exemple, mais pas dans mon tableau de prod)

Je retente une reformulation/exemple en +

J'ai une tâche T2 (01/08/24 => 31/08/24) avec une charge restante (charge / JO) de 3.

  • en août, Il me reste 5jr ouvrés : cela me fait donc une charge totale de 15.
  • en septembre, 0 car la tâche est censée se finir le 31/08.

J'ai une tâche T3 (01/08/24 => 30/09/24) avec une charge restante de 7.

  • en août, Il me reste 5jr ouvrés : cela me fait donc une charge totale de 35.
  • en septembre, j'ai 21 jours ouvrés. Cela me fait donc une charge total de 147.
  • re,

    Une solution power Query.

    Cordialement

    Bonjour Zebulon2,

    Merci ! je n'avais jamais utilisé powerquery à partir finalement d'une source de données présente dans mes feuilles, tjs à partir de src externe...

    Je vais voir demain pour l'adapter votre solution à mon fichier de prod (et déjà bien la prendre en main). Il faut savoir que j'ai 5 tableaux d'activités, et pour chaque tableaux d'activités les tâches sont attribuées à une aMOA et une MOE, donc chaque tâche à une date de début/fin + reste à faire pour l'aMOA et pour le MOE.

    Le premier ressenti à chaud (après la lecture de votre proposition) et à froid (car il est encore tôt), c'est la quantité de transformation powerquery que je vais devoir faire

    L'avantage de la formule pour la mise à jour, c'est que tous mes tableaux étaient normés "activité1[aMOA_dbt] activité1[aMOA_fin] activité1[aMOA_RAF]" et donc, qu'à partir d'une formule valable pour l'activité1 aMOA, j'avais juste à faire un CTRL-H pour remplacer aMOA par MOE et cela me donnait la bonne formule pour la MOE. Idem pour les Activités2, 3, 4...

    Donc cela va me faire bcp de transformations identiques (10) mais qui va prendre soit aMOA soit MOE, soit activité1 soit activité2...

    ---

    Au cas où, pr revenir sur la problématique avec la solution initiale de sommeprod, c'est représenté par la capture suivante

    2024 08 26 17 20 12 window

    Quand je fais un min/max dans un NB.jours.ouvres qui est dans un sommeprod, ce min/max ne me ressort par une série, comme le montre le NB.JOURS.OUVRES(45536 qui provient initialement d'un NB.JOURS.OUVRES(max(série;dateunique)

    Donc ce max ne me retourne pas une série qui, pour chaque élément de la série, le compare à la dateunique.

    Aurions-nous un moyen de le faire ?

    NB.JOURS.OUVRES(
      MAX(
        AUJOURDHUI();                     // date "unique", pas une série
        Activité1[aMOA Début]+0           // série de date
      );                                  // finalement me renvoie une date unique et pas une série ou chaque item a été max(aujourd'hui;serie[item_x])
      MIN(
        Activité1[aMOA Fin]+0;            // date "unique", pas une série
        MOIS.DECALER([@Date];1)-1         // série de date
      )                                   // finalement me renvoie une date unique et pas une série ou chaque item a été max(aujourd'hui;serie[item_x])
    )

    Encore merci pour la proposition !

    Cdt,
    Fabien

    bonjour FabienT,Zebulon2,

    avec les formules 365 en colonne N

    =SOMME(MAP(taches5[Début];taches5[Fin];taches5[charge / JO];LAMBDA(a;b;c;c*MAX(0;NB.JOURS.OUVRES(MAX(AUJOURDHUI();a;[@date]);MIN(b;FIN.MOIS([@date];0)))))))

    Bonjour à tous !

    @Zebulon2 : Hello !

    Petite astuce code M :

    Vos deux requêtes, Repart mensuelle et Repart mensuelle (2), utilisent des étapes strictement identiques pour les huit premières. Il est préférable dans cette configuration d'utiliser les fonctions liées aux métadonnées.

    Méthodologie :

    1. Requête principale, sur le code de la dernière étape, ajout de l'instruction meta [Etape= xxxxxx] (avec xxxxxx = nom de l'étape à sauvegarder dans le record)
    2. Deuxième requête, préciser que l'étape Source fait référence aux métadonnées via l'instruction = Value.Metadata(nom_de_la_requête_principale))[Etape]
    3. Supprimer les étapes inutiles.

    Bonjour le fil,

    @JFL :

    Bonjour à tous !

    @Zebulon2 : Hello !

    Petite astuce code M :

    Vos deux requêtes, Repart mensuelle et Repart mensuelle (2), utilisent des étapes strictement identiques pour les huit premières. Il est préférable dans cette configuration d'utiliser les fonctions liées aux métadonnées.

    Méthodologie :

    1. Requête principale, sur le code de la dernière étape, ajout de l'instruction meta [Etape= xxxxxx] (avec xxxxxx = nom de l'étape à sauvegarder dans le record)
    2. Deuxième requête, préciser que l'étape Source fait référence aux métadonnées via l'instruction = Value.Metadata(nom_de_la_requête_principale))[Etape]
    3. Supprimer les étapes inutiles.

    J'achète.... (Good price, j'espère... )

    Pour le moment, je créais une requête en connexion, et qui me servait de base pour d'autres.

    Cette astuce va me permettre de diminuer le nombre de requêtes "inutiles".

    Merci pour ce partage

    Bonjour à tous de nouveau !

    J'achète.... (Good price, j'espère... )

    Un Kouign-amann ?!

    Re-,

    Suffit de demander...

    image

    Allez, pour le faire passer...

    image

    PS, FabienT, désolé pour le "squattage"

    Bonjour à tous,

    Hello @JFL,

    Merci pour l'astuce, subtile, je la note dans mes tablettes.

    Bonne journée.

    Aucun soucis pour le squattage, surtout pour des kouign amann!

    Merci à tous pour votre participation. Je regarde tout ça de suite. J'ai toujours fui la fonction "map", mais là je crois que ^^

    Je vous tiens au jus ! Merci

    Alors j'ai une curiosité @BsAlv

    Quand j'édite votre formule et que je fais juste "Enter", Excel me dit que j'ai une erreur dedans ...

    2024 08 28 14 51 54 testcalculchargesurperiode 2 xlsx excel

    Je m'en suis aperçu en la retapant dans mon fichier de PROD. Excel reconnait bien toutes les fonctions, mais ...

    Bon après test unitaire de chaque fonction, c'est la fin.mois qui fait bugguer. J'ai remis mon mois.decaler([@date];1)-1 et ça marche ...

    Sinon c'est terrible... quand je vois comment j'en ai bavé. Après je me disais "Bon, Fabien, plus de 10lignes à l'intérieur c'est qu'il doit y'avoir une solution plus simple ...."

    re, supér !!!

    Fin.mois est une fonction qui existe depuis Excel2013, cela fonctionne chez moi, donc bizarre ...

    Rechercher des sujets similaires à "taches qui ont dbt fin charge calcul mois"