VBA - Appliquer une formule à une colonne puis additionner

korben8

XLDnaute Nouveau
Bonjour,

Je sollicite votre aide car mes connaissances de VBA sont assez limitées.
Vous trouverez en pièce jointe l'extrait du fichier sur lequel je travaille et qui me pose problème. Il s'agit d'un fichier de suivi de projet.
  • L'onglet Holidays comporte un tableau dans lequel je rentre manuellement les jours fériés et les congés.
  • L'onglet Feuil_calc_budg: des colonnes A à I, il s'agit de la liste de tâches de mon projet, leur type, leur date de fin la durée,...ces informations sont extraites d'une autre feuille (mise en forme) via une macro. Cette liste à une longueur variable.
    Des colonnes J à GO, c'est le calendrier semaine par semaine de mon projet.
Mon but est d'obtenir l'évolution globale de la worload calculée par semaine puis cumulée de la première semaine à la dernière semaine, pour les tâches définies comme Activity (en colonne A).

J'ai essayé de faire ceci via des formules, ce qui m'a poussé à calculer ce que je cherche tâche par tâche puis d’additionner.
J'ai réussi à établir les deux types de formules nécessaires, elles semblent fonctionner comme il faut.

  • Pour la colonne J, je calcule la workload pour la première semaine du projet (il n'y a pas de cumul car pas de semaine précédente). Formule pour la cellule J3:
    =SI($A3="Activity";SI($H3<J$1;;SI(ET($F3<J$1;$H3>=J$1;$H3<=(J$1+5));NB.JOURS.OUVRES(J$1;$H3;Holidays!$A$6:$A$150)*$C3;SI(ET($F3<J$1;$H3>(J$1+5));NB.JOURS.OUVRES(J$1;J$1+5;Holidays!$A$6:$A$150)*$C3;SI(ET($F3>=J$1;$F3<=(J$1+5);$H3>(J$1+5));NB.JOURS.OUVRES($F3;J$1+5;Holidays!$A$6:$A$150)*$C3;SI(ET($F3>(J$1+5));;SI(ET($F3>=J$1;$H3<=(J$1+5));NB.JOURS.OUVRES($F3;$H3;Holidays!$A$6:$A$150)*$C3;))))));)
  • Pour chaque colonne de J à GO, je calcule la workload et je cumule avec la semaine précédente. Formule pour la cellule K2:
    =SI($A3="Activity";SI($H3<K$1;J3;SI(ET($F3<K$1;$H3>=K$1;$H3<=(K$1+5));NB.JOURS.OUVRES(K$1;$H3;Holidays!$A$6:$A$150)*$C3+J3;SI(ET($F3<K$1;$H3>(K$1+5));NB.JOURS.OUVRES(K$1;K$1+5;Holidays!$A$6:$A$150)*$C3+J3;SI(ET($F3>=K$1;$F3<=(K$1+5);$H3>(K$1+5));NB.JOURS.OUVRES($F3;K$1+5;Holidays!$A$6:$A$150)*$C3+J3;SI(ET($F3>(K$1+5));J3;SI(ET($F3>=K$1;$H3<=(K$1+5));NB.JOURS.OUVRES($F3;$H3;Holidays!$A$6:$A$150)*$C3+J3;))))));)
Et ensuite je fais la somme de chaque colonne en ligne 2. Tout cela fonctionne très bien mais cela prend beaucoup de temps à calculer et rend le fichier très lourd.

J'ai donc pensé qu'il serait possible de faire tout cela via VBA, d'automatiser cela pour éviter tous ces calculs ligne par ligne et colonne par colonne.

La macro ferait les calculs, de la ligne 3 à la dernière ligne non vide (qui serait déterminée par le fait que la cellule B soit vide), pour la colonne J, indiquerait la somme en J2, puis pour les colonnes K à GO en indiquant la somme en ligne 2.

Afin de pour télécharger le fichier car il était trop lourd, j'ai du supprimer les colonnes après EA et m’arrêter à la ligne 20.

J'espère avoir été clair...

Je vous remercie par avance.
 

Fichiers joints

Discussions similaires


Haut Bas