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 :
En plus d'être lourd, cela ne donne pas le résultat attendu. Je pensais à une alternative de ce style :
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
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