Vba boucle for dans boucle for next sous condition

Signaler
-
Messages postés
9983
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 juillet 2021
-
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

Messages postés
9983
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 juillet 2021
2 161
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
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
Messages postés
9983
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 juillet 2021
2 161
Je pense que l'objet dictionary est plus adapté pour récupérer une liste sans doublon
Un exemple
https://www.cjoint.com/c/KGhuBLPuvhB

Cdlmnt