Boucles dans boucle

Bonjour à tous,

Je fais face à un problème sur une feuille excel assez complexe. Je vous simplifie le truc dans la feuille excel en pièce jointe.

Alors j'aimerais faire une macro qui reporte automatiquement les infos suivantes.

Dans la feuil1 vous trouverez :

  • Le model : varie entre 1 et 24
  • L'option 1 : varie entre 1 et 10
  • L'option 2 : varie entre 1 et 5
  • L'option 3 : varie entre 1 et 4

Je voudrais reporter l'info Résultat1 et résultat2 sur la feuil2 incrémentant la ligne automatiquement. Par exemple, je choisi le model 1 avec l'option 1 = 1, l'option 2 = 1, l'option 3 = 1 et je reporte le résultat 1 en A2 de la feuil2 et le résultat 2 en B2, puis je reporte également le model et les numéros d'option. Ensuite toujours en laissant le model à 1, je fais varier mes options et reportent les résultats en incrémentant la ligne automatiquement. Puis je passe le model à 2 et je répète l'opération, et je continue mon incrémentation sans supprimer les lignes déjà inscrites.

Alors j'arrive à faire ma boucle un incrémentant automatiquement mais en faisant uniquement varier le modèle sans modifier mes options. Ca devient trop compliqué pour mes connaissances, pourriez-vous m'aider, si toutefois j'ai été assez claire dans mes explications.

Merci d'avance.

5test-boucle.xlsx (8.90 Ko)

bonjour,

solution via une macro

Sub aargh()
    With Sheets("feuil2")
        j = 1
        For m = 1 To 24
            For o1 = 1 To 10
                For o2 = 1 To 5
                    For o3 = 1 To 4
                        j = j + 1
                        .Cells(j, 3) = m
                        .Cells(j, 4) = o1
                        .Cells(j, 5) = o2
                        .Cells(j, 6) = o3
                        .Cells(j, 1) = "model " & m
                        .Cells(j, 2) = o1 & " " & o2 & " " & o3
                    Next o3
                Next o2
            Next o1
        Next m
    End With
End Sub

Merci pour ta réponse.

De ce que je comprend, tu indiques les valeurs directement dans la feuil2, mais comment renseigner les valeurs dans la feuil1 et récupérer la valeur des cellules de la feuil1 pour les noter dans la feuil2 ?

re-bonjour,

voici

Sub aargh()
    Set ws1 = Sheets("feuil1")
    With Sheets("feuil2")
        j = 1
        For m = 1 To 24
            For o1 = 1 To 10
                For o2 = 1 To 5
                    For o3 = 1 To 4
                        j = j + 1
                        ws1.Cells(2, 1) = m
                        ws1.Cells(2, 2) = o1
                        ws1.Cells(2, 3) = o2
                        ws1.Cells(2, 4) = o3
                        .Cells(j, 3) = ws1.Cells(2, 1)
                        .Cells(j, 4) = ws1.Cells(2, 2)
                        .Cells(j, 5) = ws1.Cells(2, 3)
                        .Cells(j, 6) = ws1.Cells(2, 4)
                        .Cells(j, 1) = ws1.Cells(5, 1)
                        .Cells(j, 2) = ws1.Cells(5, 2)
                    Next o3
                Next o2
            Next o1
        Next m
    End With
End Sub

Merci, ça marche ! C'est extrêmement long, mais ça marche.

re-bonjour,

ceci devrait diminuer un peu le temps d'exécution.

Sub aargh()
    Application.ScreenUpdating = False
    Set ws1 = Sheets("feuil1")
    With Sheets("feuil2")
        j = 1
        For m = 1 To 24
            For o1 = 1 To 10
                For o2 = 1 To 5
                    For o3 = 1 To 4
                        j = j + 1
                        ws1.Cells(2, 1) = m
                        ws1.Cells(2, 2) = o1
                        ws1.Cells(2, 3) = o2
                        ws1.Cells(2, 4) = o3
                        .Cells(j, 3) = ws1.Cells(2, 1)
                        .Cells(j, 4) = ws1.Cells(2, 2)
                        .Cells(j, 5) = ws1.Cells(2, 3)
                        .Cells(j, 6) = ws1.Cells(2, 4)
                        .Cells(j, 1) = ws1.Cells(5, 1)
                        .Cells(j, 2) = ws1.Cells(5, 2)
                    Next o3
                Next o2
            Next o1
        Next m
    End With
End Sub

Merci, je vais tester.

Bonjour et merci encore pour votre aide. J'aimerais optimiser le temps de traitement de ma macro, ainsi je voudrais par exemple que o2 soit testé pour les valeurs 1, 3 et 4 au lieu de 1 à 5, comment je peux faire ?

Et bien j'ai trouvé ça qui semble marcher :

dim o2 as variant
For Each o2 In Array(1, 3, 4)

Next o2
Rechercher des sujets similaires à "boucles boucle"