Boucles imbriquées dans Vba
la_defense
-
la_defense -
la_defense -
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.
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.
A voir également:
- Boucles imbriquées dans Vba
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
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
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