Sortir d'une condition if

Bonjour,

J'ai quelques soucis avec mon code actuel.

J'ai récupéré des données que j'ai stocké dans des tableaux copie() et montant()

J'effectue une recherche dans un classeur pour trouver la ligne correspondant à la valeur contenu dans copie(k).

Une fois la valeur trouvée (et donc mon numéro de ligne en poche), je parcours les cellules de la colonne C à la colonne M de cette ligne et je voudrais faire en sorte que si on trouve une cellule de couleur rouge, on passe à la recherche suivante "copie(k+1)"

Mon code:

For k = 1 To UBound(Copie) - 1
    'En fonction des valeurs des champs, on définit une valeur p correspondant (initialement) à dateref
        p = Month(dateref) + 2
        If (Copie(k) = "int1" Or Copie(k) = "int2" Or Copie(k) = "int3") Then
            p = p + 4
        ElseIf (Copie(k) = "int4" Or Copie(k) = "int5" Or Copie(k) = "int5" Or Copie(k) = "int7" Or Copie(k) = "int8") Then
            p = p + 8
        ElseIf Copie(k) = "int9" Then
            p = p + 7
        ElseIf (Copie(k) = "int10" Or Copie(k) = "int11" Or Copie(k) = "int12" Or Copie(k) = "int13" Or Copie(k) = "int14" Or Copie(k) = "int15" Or Copie(k) = "int16") Then
            p = p + 9
        ElseIf (Copie(k) = "int17" Or Copie(k) = "int18" Or Copie(k) = "int19") Then
            p = p + 10
        ElseIf Copie(k) = "int20" Then
            p = p + 11
        ElseIf Copie(k) = "int21" Then
            p = p + 13
        ElseIf (Copie(k) = "int22" Or Copie(k) = "int23" Or Copie(k) = "int24" Or Copie(k) = "int25") Then
            p = p + 14
        ElseIf (Copie(k) = "int26" Or Copie(k) = "int27" Or Copie(k) = "int28" Or Copie(k) = "int29") Then
            p = p + 15
        End If

        For i = 0 To UBound(mesonglets)
        'On recherche le nom du client
            Set c = Worksheets(mesonglets(i)).Columns("A").Find(Copie(34), LookIn:=xlValues)
            If Not c Is Nothing Then
                col = c.Row
                'Si client trouvé, on recherche l'intitulé
                Set b = c(1).Offset(0, 1).Resize(c.MergeArea.Rows.Count).Find(Copie(k), LookIn:=xlValues)
                If Not b Is Nothing Then
                    coll = b.Row
                End If
            End If
        Next i

        'Si la variable p est inférieur à 14, les données seront insérées en onglet y
        If p <= 14 Then
            'On parcourt les cellules 3 à 14. Si on tombe sur une cellule rouge, on fait next k, sinon, on supprime le contenu des cellules 3 à 14 et on copie le contenu de montant(k) au bon endroit
            For f = 3 To 14
                If previ.Cells(coll, f).Interior.ColorIndex = 3 Then
                    MsgBox "plop"
                    Exit For
                Else
                    previ.Range(previ.Cells(coll, 3), previ.Cells(coll, 14)).ClearContents
                    previ.Cells(coll, p).Value = montant(k)
                End If
            Next f
        'Si la variable p est supérieur à 14 et inférieur à 26, les données seront insérées en onglet y+1
        ElseIf p > 14 And p <= 26 Then
            p = p - 12
            prev.Range(prev.Cells(coll, 3), prev.Cells(coll, 14)).ClearContents
            prev.Cells(coll, p).Value = montant(k)
        'Si la variable p est supérieur à 26, les données seront insérées en onglet y+2
        Else
            p = p - 24
            pre.Range(pre.Cells(coll, 3), re.Cells(coll, 14)).ClearContents
            pre.Cells(coll, p).Value = montant(k)
        End If
Next k

    'On enregistre le document prévisionnel et on le ferme
    ActiveWorkbook.Save

    Windows(Fichier_Client).Activate

End Sub

J'ai essayé de commenter mon code le mieux possible.

le problème concerne la dernière partie:

       'Si la variable p est inférieur à 14, les données seront insérées en onglet y
        If p <= 14 Then
            'On parcourt les cellules 3 à 14. Si on tombe sur une cellule rouge, on fait next k, sinon, on supprime le contenu des cellules 3 à 14 et on copie le contenu de montant(k) au bon endroit
            For f = 3 To 14
                If previ.Cells(coll, f).Interior.ColorIndex = 3 Then
                    Exit For
                Else
                    previ.Range(previ.Cells(coll, 3), previ.Cells(coll, 14)).ClearContents
                    previ.Cells(coll, p).Value = montant(k)
                End If
            Next f
        'Si la variable p est supérieur à 14 et inférieur à 26, les données seront insérées en onglet y+1
        ElseIf p > 14 And p <= 26 Then
            p = p - 12
            prev.Range(prev.Cells(coll, 3), prev.Cells(coll, 14)).ClearContents
            prev.Cells(coll, p).Value = montant(k)
        'Si la variable p est supérieur à 26, les données seront insérées en onglet y+2
        Else
            p = p - 24
            pre.Range(pre.Cells(coll, 3), re.Cells(coll, 14)).ClearContents
            pre.Cells(coll, p).Value = montant(k)
        End If

J'ai essayé quelque chose mais ça ne fonctionne pas.

For f = 3 To 14
                If previ.Cells(coll, f).Interior.ColorIndex = 3 Then
                    MsgBox "plop"
                    Exit For
                Else
                    previ.Range(previ.Cells(coll, 3), previ.Cells(coll, 14)).ClearContents
                    previ.Cells(coll, p).Value = montant(k)
                End If
            Next f

je voudrais faire en sorte que si la condition ci-dessous est vérifiée, alors on passe à "Next k"

If previ.Cells(coll, f).Interior.ColorIndex = 3  

Merci pour votre aide

Bonsoir,

Vu le syntaxe, il devrait marcher. Vérifie si la condition de sortie est vraie. Attention ! La sortie est effectuée au

Next f
Rechercher des sujets similaires à "sortir condition"