[VBA - Excel 2010] boucle de boucle

Résolu/Fermé
Pyvoudelet Messages postés 166 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 18 mai 2020 - 30 mars 2011 à 22:51
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 1 avril 2011 à 00:11
Bonjour,


Pour m eviter une longue formule dans une cellule je voulais faire une boucle. Mais meme avec ça, j'ai du mal a simplifier la formule.

Ci dessous vous trouverez la première partie de la boucle. Quelqu'un a t il une idee pour me simplifier cela???

Le problème c est que même décomposer ainsi cela ne marche pas. En effet, supposons que la cellule Sheets("COMP DB").Cells(comp_ligne, 13) (ligne 16) soit vide, sa valeur mat4_name est considérer comme "vide", ce qui me fait alors bugger la somme finale (ligne 29). Il faudrait donc qu'a chaque fois qu une cellule recherchée en début de bloc est vide, cela me renvoi une valeur = 0 pour pouvoir etre "pris en compte" dans ma somme.


Si qqn arrive a me faire une boucle pour m eviter les 7 bloc, ca serait magique! j ai essayer, mais la somme finale me gène......

<1> For i = 5 To 24

<2> comp_name = Sheets("imp_prod").Cells(i, 1).Value

<3> comp_ligne = Sheets("COMP DB").Columns("A").Find(comp_name).Row


<4> mat1_name = Sheets("COMP DB").Cells(comp_ligne, 7).Value
mat1_ligne = Sheets("MATERIALS").Columns("A").Find(mat1_name).Row
imp_mat1 = Sheets("MATERIALS").Cells(mat1_ligne, 4).Value
mat1_prop = Sheets("COMP DB").Cells(comp_ligne, 8).Value

<8> mat2_name = Sheets("COMP DB").Cells(comp_ligne, 9).Value
mat2_ligne = Sheets("MATERIALS").Columns("A").Find(mat2_name).Row
imp_mat2 = Sheets("MATERIALS").Cells(mat2_ligne, 4).Value
mat2_prop = Sheets("COMP DB").Cells(comp_ligne, 10).Value

<12> mat3_name = Sheets("COMP DB").Cells(comp_ligne, 11).Value
mat3_ligne = Sheets("MATERIALS").Columns("A").Find(mat3_name).Row
imp_mat3 = Sheets("MATERIALS").Cells(mat3_ligne, 4).Value
mat3_prop = Sheets("COMP DB").Cells(comp_ligne, 12).Value

<16> mat4_name = Sheets("COMP DB").Cells(comp_ligne, 13).Value
mat4_ligne = Sheets("MATERIALS").Columns("A").Find(mat4_name).Row
imp_mat4 = Sheets("MATERIALS").Cells(mat4_ligne, 4).Value
mat4_prop = Sheets("COMP DB").Cells(comp_ligne, 14).Value

<20>mat5_name = Sheets("COMP DB").Cells(comp_ligne, 15).Value
mat5_ligne = Sheets("MATERIALS").Columns("A").Find(mat5_name).Row
imp_mat5 = Sheets("MATERIALS").Cells(mat1_ligne, 4).Value
mat5_prop = Sheets("COMP DB").Cells(comp_ligne, 16).Value

<24> mat6_name = Sheets("COMP DB").Cells(comp_ligne, 17).Value
mat6_ligne = Sheets("MATERIALS").Columns("A").Find(mat6_name).Row
imp_mat6 = Sheets("MATERIALS").Cells(mat6_ligne, 4).Value
mat6_prop = Sheets("COMP DB").Cells(comp_ligne, 18).Value

<25> mat7_name = Sheets("COMP DB").Cells(comp_ligne, 19).Value
mat7_ligne = Sheets("MATERIALS").Columns("A").Find(mat7_name).Row
imp_mat7 = Sheets("MATERIALS").Cells(mat7_ligne, 4).Value
mat7_prop = Sheets("COMP DB").Cells(comp_ligne, 20).Value

<29> imp_comp = imp_mat1 * mat1_prop + imp_mat2 * mat2_prop + imp_mat3 * mat3_prop + imp_mat4 * mat4_prop + imp_mat5 * mat5_prop + imp_mat6 * mat6_prop + imp_mat7 * mat7_prop



<30> Next i


Merci d avance

NB: dsl de ne pas vous mettre le fichier source mais ca serait trop compliquÉ

A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
31 mars 2011 à 19:35
Essaie :
For i = 5 To 24
  comp_name = Sheets("imp_prod").Cells(i, 1).Value
  comp_ligne = Sheets("COMP DB").Columns("A").Find(comp_name).Row
  For j = 7 To 19 Step 2
    mat_name = Sheets("COMP DB").Cells(comp_ligne, j).Value
    mat_ligne = Sheets("MATERIALS").Columns("A").Find(mat_name).Row
    imp_mat = Sheets("MATERIALS").Cells(mat_ligne, 4).Value
    mat_prop = Sheets("COMP DB").Cells(comp_ligne, j + 1).Value
    imp_comp = imp_comp + imp_mat * mat_prop
  Next j
Next i
1
Pyvoudelet Messages postés 166 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 18 mai 2020 12
31 mars 2011 à 19:48
MERCI BCP!!!
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
1 avril 2011 à 00:11
De rien, au plaisir de te relire sur le forum

Patrice
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
31 mars 2011 à 00:04
Désolé mais sans fichier exemple (sans macro) c'est trop de travail.
0
Pyvoudelet Messages postés 166 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 18 mai 2020 12
31 mars 2011 à 14:17
Bon ben merci quand meme .... le fichier est trop compliqué pour que je vous vous en fasse une version simplifiée hors de toute confidentialité......
0