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