Problème Exit For

Calvus

XLDnaute Barbatruc
Bonsoir le forum,

Encore un truc bizarre, ou que je n'arrive pas à voir...

Dans cette partie de code :
VB:
 For k = 3 To 13 Step 2
            For l = 3 To 7
                DernJour = DateSerial(Feuil1.[L2], Month(1 & "/" & ActiveSheet.Name) + 1, 1) - 1
                If k = 13 And l < 5 Then Cellule_Actuelle = Day(ActiveSheet.Cells(k, l))
                    For a = 2 To 14
                    If ActiveSheet.Cells(k, l) = Feuil1.Cells(a, 16) And ActiveSheet.Cells(k, l) < DernJour Then
                    ActiveSheet.Cells(k + 1, l).Interior.Color = 9277427
                    l = l + 1:  Exit For
                            If l = 8 Then l = 3
                    End If
                Next

Le Exit For fonctionne parfaitement. On sort immédiatement de la boucle.

Dans cette partie de code :
VB:
Dim f, g
For f = 3 To 13 Step 2
For g = 3 To 8
If ActiveSheet.Cells(f, g) = Date_de_ce_Mois + 7 Then ActiveSheet.Cells(f + 1, g).Select: Exit For

Next
Next

Le Exit For ne fonctionne pas.

Pouvez vous me dire pourquoi ???
Je précise que la condition est bien vérifiée, que le If s'exécute, et que le Exit for est bien lu, mais la boucle continue.

Merci
 

youky(BJ)

XLDnaute Barbatruc
Bonsoir Calvus,
La macro comporte 2 For, tu le fait sortir d'un For mais il reste sur l'autre For
Il faudrait mettre Exit Sub et si la macro doit continuer mettre ci-dessous exemple Goto suite
For f = 3 To 13 Step 2
For g = 3 To 8
If Cells(f, g) = Date_de_ce_Mois + 7 Then Cells(f + 1, g).Select: Goto suite
Next
Next

suite:
'et la suite de la macro

Bruno
 

eriiic

XLDnaute Barbatruc
Bonjour,

n'aimant pas trop les goto j'aurais fait ça :
VB:
For f = 3 To 13 Step 2
    For g = 3 To 8
        If ActiveSheet.Cells(f, g) = Date_de_ce_Mois + 7 Then ActiveSheet.Cells(f + 1, g).Select: Exit For
    Next
    If g <9 Then Exit For
Next
eric
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@Calvus
Ma contribution du dimanche matin (au sortir de la douche) ;)
VB:
Sub TroisPourLePrix_D_Un()
DernJourA = DateSerial(Feuil1.[L2], Month(1 & "/" & ActiveSheet.Name) + 1, 1) - 1
DernJourB = DateSerial(Year(Date), Month(Date) + 1, 0)
DernJourC = CDate(Application.EoMonth(Date, 0))

MsgBox DernJourA
MsgBox DernJourB
MsgBox DernJourC
End Sub
 

Staple1600

XLDnaute Barbatruc
Re, bonjour cp4

C'est normal qu'il y ait un message d'erreur
puisque mon code s'adressait à Calvus (qui lui seul détient son classeur en captivité sur son disque dur ;) )
Si tu ne veux pas de message d'erreur, voici une version spéciale cp4 ;)
VB:
Sub TroisPourLePrix_D_Un()
'Pour cp4 ;)
Feuil1.[L2] = "2018": ActiveSheet.Name = "2018"

DernJourA = DateSerial(Feuil1.[L2], Month(1 & "/" & ActiveSheet.Name) + 1, 1) - 1
DernJourB = DateSerial(Year(Date), Month(Date) + 1, 0)
DernJourC = CDate(Application.EoMonth(Date, 0))

MsgBox DernJourA
MsgBox DernJourB
MsgBox DernJourC
End Sub
 

cp4

XLDnaute Barbatruc
Re, bonjour cp4

C'est normal qu'il y ait un message d'erreur
puisque mon code s'adressait à Calvus (qui lui seul détient son classeur en captivité sur son disque dur ;) )
Si tu ne veux pas de message d'erreur, voici une version spéciale cp4 ;)
Merci pour le code. Même sans le fichier de Calvus, j'ai ouvert un fichier et dans la cellule L2 de la feuil1, j'ai mis une date. Normalement, le code n'aurait pas dû planté?:(
Merci beaucoup.

edit: j'ai bien compris ton code, d'où le plantage avec une date en L2.
 

Statistiques des forums

Discussions
312 026
Messages
2 084 754
Membres
102 654
dernier inscrit
kulas11