[VBA - Excel 2010] boucle de boucle [Résolu/Fermé]

Signaler
Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
-
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
-
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É

2 réponses

Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
10
MERCI BCP!!!
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
De rien, au plaisir de te relire sur le forum

Patrice
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
Désolé mais sans fichier exemple (sans macro) c'est trop de travail.
Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
10
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é......