Vba boucle for dans boucle for next sous condition

Barns -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

Je suis bloqué sur un code simplifié comme suit :
Sub ()
For i=0 to 10
For z=0 to 10
If condition then
instruction 1
Next i
End if
Next z
Instruction 2
Next i
End sub

Ici je ne peux mettre deux next I mais c'est pour vous faire passer l'idée. Je ne sais que faire si quelqu'un a déjà fait face à cette problématique je suis preneur.

Merci beaucoup pour votre aide

Configuration: Android / Chrome 91.0.4472.120

3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Ton code n'est pas correct
    tu ne peux pas fermer la boucle i avant d'avoir fermé la boucle z

    Sub ok()
    For i = 0 To 10
      For z = 0 To 10
        If Condition Then
           Instruction 1
        End If
      Next z
      Instruction 2
    Next i
    End Sub


    Mais ça ne doit pas correspondre à ce que tu veux
    Il faudrait en dire plus sur ce que tu veux faire

    Cdlmnt
    0
  2. BARNS
     
    En gros je souhaite réaliser une liste sans doublon issus de plusieurs tableaux.
    Le nombre de tableaux et la longueur sont définis par des choix user donc je suis obligé d'utiliser des boucles for.

    Option Explicit

    Sub Tubes()
    'CREATION D'UN TABLEAU SANS DOUBLON DES LONGUEUR CANNES
    Dim tabtube()
    Dim nbrsection As Byte
    Dim i As Byte
    Dim j As Byte
    Dim k As Byte
    Dim z As Byte
    Dim lig As Byte
    Dim derniereL

    nbrsection = 2

    lig = 20
    For i = 0 To nbrsection - 1 'autant de fois que de sections
    k = 0
    For j = 1 To tabTrv(i) 'autant de fois que de piquages

    If j > 1 Then
    For z = 0 To UBound(tabtube) 'autant de fois que de cellule dans le tableau créé
    'avec tabtube(z,1)= taille du tube et tabtube(z,0) nombre de doublons
    'si le doublon existe
    If Cells(lig, 3 + j).Value = tabtube(z)(0) Then
    tabtube(z)(1) = tabtube(z)(1) + 1
    Exit For
    End If
    Next z

    If Not Cells(lig, 3 + j).Value = tabtube(z)(0) Then
    End If
    ReDim Preserve tabtube(k)
    tabtube(k) = Array(Cells(lig, 3 + j).Value, 1)
    k = k + 1
    End If

    Next j
    lig = lig + 5
    Next i

    End Sub
    0