Re : boucle en fonction de "i-1"??
donc au moment où tu incrémentes ton i, tu sauves j dans une autre variable et tu te sers de cette autre variable?
i=i+1
k=j
j'ai mis en pj le fichier "d'arrivée" (fb dans la macro) avec en rouge ceux que je souhaite copier d'une autre classeur (f1 dans la macro).
Le problème c'est que le nombre d'outil à controler par pylone varie, en fonction d'un nombre situé en S du fichier f1.Si ce nombre d'outil a controler est de 1, pas de problème puisque le pylone suivant se trouvera à laligne du dessous, par contre si ce nombre est plus elevé (2, 3, 4 ou 5), cela decalera la ligne ou se trouvera le pylone suivant; En effet, je pense que le fichier joint sera util pour comprendre!!
J'ai essayé une nouvelle macro:
Sub controle_outils()
Set don1 = Workbooks("nom_fichier.xls").Sheets("feuil1")
donn1 = don1.Cells(5, 3)
Set f1 = Workbooks(donn1).Sheets("Feuil1") ' bdd
Set donB = Workbooks("nom_fichier.xls").Sheets("feuil1")
donnB = donB.Cells(11, 3)
Set fB = Workbooks(donnB).Sheets("feuille1") ' pv ctrl outil
Set fC = Workbooks(donnB).Sheets("feuille2")
nb_pylone = 0
While f1.Cells(nb_pylone + 7, 2) <> Empty
nb_pylone = nb_pylone + 1
Wend
i = 0
c = 1
While i < nb_pylone And (i + (c - 1) + 21) < 38
fB.Cells(2, 35) = f1.Cells(1, 2)
fB.Cells(4, 10) = f1.Cells(7, 3)
fC.Cells(3, 35) = f1.Cells(1, 2)
fC.Cells(4, 10) = f1.Cells(7, 3)
If i = 0 Then
c = 1
ElseIf i > 0 Then
b = f1.Cells(i + 7, 19)
c = b / 4
a = f1.Cells(i + 7, 19) 'nbre de pieux pâr pylone
If a < 5 Then
fB.Cells(i + (c - 1) + 21, 14) = f1.Cells((i + 7), 2)
fB.Cells(i + 21 + (c - 1), 20) = 1
fB.Cells(i + 21 + (c - 1), 24) = f1.Cells(i + 7, 20)
ElseIf 4 < a And a < 9 Then
fB.Cells(i + (c - 1) + 21, 14) = f1.Cells((i + 7), 2) 'numero de pylone
fB.Cells(i + 21 + (c - 1), 20) = 1
fB.Cells(i + 22 + (c - 1), 20) = 2
fB.Cells(i + 21 + (c - 1), 24) = f1.Cells(i + 7, 20)
fB.Cells(i + 22 + (c - 1), 24) = f1.Cells(i + 7, 20)
ElseIf 8 < a And a < 13 Then
fB.Cells(i + (c - 1) + 21, 14) = f1.Cells((i + 7), 2) 'numero de pylone
fB.Cells(i + 21 + (c - 1), 20) = 1
fB.Cells(i + 22 + (c - 1), 20) = 2
fB.Cells(i + 23 + (c - 1), 20) = 3
fB.Cells(i + 21 + (c - 1), 24) = f1.Cells(i + 7, 20)
fB.Cells(i + 22 + (c - 1), 24) = f1.Cells(i + 7, 20)
fB.Cells(i + 23 + (c - 1), 24) = f1.Cells(i + 7, 20)
End If
i = i + 1
End If
Wend
End Sub
petite info supplementaire, le tableau débute à la ligne 21 et se termine à la ligne 38, pour reprendre sur la feuille 2 ensuite.ceci est également un mystere pour moi!