Sommeprod formule circulaire - Macro VBA

SAMWRC

XLDnaute Occasionnel
Bonjour le forum !

Voici mon problème : comme vous pouvez le voir sur ma pièces jointe, j'ai un tableau de nomenclature d'articles. Je souhaite à partir de cette nomenclature, obtenir les besoins des articles composants. Les articles composés ayant un besoin fixe (colonnes H et I).

Ce besoin est répercuté en amont selon les quantités composant par composé (colonne B) et les taux de rebut (colonne E). Ma formule en colonne F répond, en soit, à mon besoin. Il s'agit d'une formule sommeprod circulaire. Il faut donc activer les formules circulaires dans les options Excel.

Malheureusement, avec une nomenclature de plusieurs centaines d'articles et des analyses sur cette nomenclature, le calcul devient très long et très lourd.

Je cherche donc à alléger le calcul. J'ai créé une macro pour ne recalculer les besoins que quand je le souhaite. Un clic sur le bouton "Calcul besoins" donne le résultat en colonne G. On se rend rapidement compte que les itérations des boucles de la macro ne fonctionnent pas correctement, les besoins étant répercutés plus de fois que nécessaire.

La partie suivante du code pose problème :

Code:
If i > 1 Then
    For k = 1 To UBound(tableau, 1) 'Pour chaque ligne du tableau
        If tableau(k, 1) = tableau(j, 3) Then
            'On affecte le besoin induit du composé
            tbo_pass(j) = tbo_pass(j) + tableau(k, 2) * tbo_pass(k) / (1 - tableau(j, 5))
        End If
    Next
End If

En plus d'être lourd, cela ne donne pas le résultat attendu. Je pensais à une alternative de ce style :

Code:
For Each Cel1 In Plage1
        For Each Cel2 In Plage2
            If Cel2 = Cel1 Then 'On affecte le besoin induit du composé
        Next Cel2
Next Cel1

Mais je suis encore limité au niveau de l'utilisation des tableaux VBA et je ne sais pas comment m'y prendre.

Une autre alternative serait peut-être d'utiliser Evaluate(Sumproduct ...

Voilà, je suis un peu perdu dans mes réflexions et je mouline dans la choucroute. Donc si quelqu'un a une brillante idée, je suis preneur :)

Merci d'avance
Sam
 

Pièces jointes

  • Sam.xls
    33 KB · Affichages: 49
  • Sam.xls
    33 KB · Affichages: 55
  • Sam.xls
    33 KB · Affichages: 53

Discussions similaires

  • Question
Microsoft 365 Macro VBA
Réponses
1
Affichages
241

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof