[VBA - Excel 2010] boucle de boucle

Résolu
Pyvoudelet Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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É


--
Bienheureux ceux qui savent rire d'eux mêmes: ils n'ont pas finis de s'amuser!

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. Pyvoudelet Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   12
       
      MERCI BCP!!!
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      De rien, au plaisir de te relire sur le forum

      Patrice
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Désolé mais sans fichier exemple (sans macro) c'est trop de travail.
    0
    1. Pyvoudelet Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   12
       
      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