Boucles imbriquées dans Vba

Fermé
la_defense - 1 nov. 2010 à 19:29
 la_defense - 2 nov. 2010 à 02:42
Bonjour,

J'ai un problème avec un code VBA.

J'ai une liste de contrat sur une feuille "Saisie_des_données_contrats", que je mets successivement dans la cellule A6 de la feuille "Calcul". Selon la valeur de cette cellule A6, la plage A6:I8 change de valeur.
Dans la feuille "Recuperation_des_valeurs", je recopie successivement les résultats obtenus.

Jusque là, pas de souci.
Ci_dessous le code:

Dim i As Integer, DerniereLigne As Integer, Derlig As Integer

Sheets("Calcul").Activate
Range("A6").Select
Selection.ClearContents

Sheets("Saisie_données_contrat").Activate
Derlig = Sheets("Saisie_données_contrat").Range("A65536").End(xlUp).Row

For i = 2 To Derlig Step 3

With Sheets("Calcul")
.Range("A6").Value = Sheets("Saisie_données_contrat").Range("A" & i).Value
End With

With Sheets("Recuperation_des_valeurs")
DerniereLigne = .Range("I65536").End(xlUp).Row + 1
End With

With Sheets("Calcul")
.Range("A6:I8").Copy
End With

Sheets("Recuperation_des_valeurs").Range("A" & DerniereLigne).PasteSpecial Paste:=xlPasteValues


Mon problème est que pour chacun de ces contrats, il y a plusieurs formules possibles.
Ces formules sont dans la plage A28:A43 de la feuille "Calcul". Je voudrais les mettre successivement dans ma cellule B15. Selon la valeur de B15 et A16, la plage A6:I8 change.

En résumé, pour le moment, j'arrive à recopier dans "Recuperation_des_valeurs" la plage A6:I8 pour chacun des contrat que je récupère de la colonne A de "Saisie_données_contrat" et que je met successivement dans la cellule A6 de la feuille "Calcul". Ce que je voudrais maintenant faire, c'est que pour chacun des valeurs qui sont dans A6 (feuille "Calcul"); ma cellule B15 prenne successivement les valeurs de la plage A23:A48 (il y a une valeur toutes les deux lignes) et que la plage A6:I8 soit recopiée dans "Recuperation_des_valeurs".

Il faut donc que je refasse une boucle dans la boucle mais je n'y arrive pas.

Pourriez-vous m'aider?

D'avance merci à toutes et à tous
J'attends vos réponse avec impatience.

1 réponse

J'ai un peu travaillé sur mon code. Je le mets en copie ci-dessous:

Dim i As Integer, DerniereLigne As Integer, Derlig As Integer, Ligneder As Integer, j As Integer

Sheets("Calcul").Activate
Range("A6").Select
Selection.ClearContents

Sheets("Saisie_données_contrat").Activate
Derlig = Sheets("Saisie_données_contrat").Range("A65536").End(xlUp).Row

For i = 2 To Derlig Step 3

With Sheets("Calcul")
.Range("A6").Value = Sheets("Saisie_données_contrat").Range("A" & i).Value
End With

Sheets("Calcul").Activate

For j = 28 To 42 Step 2

'Ligneder = Sheets("Calcul").Range("A65536").End(xlUp).Row

With Sheets("Calcul")
.Range("B15").Value = Sheets("Calcul").Range("A" & j).Value
End With

Next j


With Sheets("Recuperation_des_valeurs")
DerniereLigne = .Range("I65536").End(xlUp).Row + 1
End With

With Sheets("Calcul")
.Range("A6:I8").Copy
End With

Sheets("Recuperation_des_valeurs").Range("A" & DerniereLigne).PasteSpecial Paste:=xlPasteValues

Next i

Application.CutCopyMode = False


End Sub

J'ai essayé de rajouter la boucle en j mais le résultat est le même qu'avec le code précédent (premier message). Qu'est-ce qui en vas pas?


Merci
0