Boucle qui ne fonctionne pas

Bonjour,

J'ai le code suivant :

Private Function sendMail(toWhom As String, object As String, body As String)
    Dim ObjOutlook As New Outlook.Application
    Dim oBjMail

    Set ObjOutlook = New Outlook.Application
    Set oBjMail = ObjOutlook.CreateItem(olMailItem)

    With oBjMail
        .To = toWhom
        .Subject = object
        .body = body
        .Send
    End With

End Function

Sub mailTest()
    Dim datesRappel As Range
    Dim mailBody As String
    Dim counter As Integer

    ' Construit le corps du mail dans la variable mailBody
    Set datesRappel = Range(Range("C4"), Range("C4").End(xlDown))
    mailBody = "Rappel :"
    counter = 0

    For Each dateRappel In datesRappel
        ' Date du jour ?
        If dateRappel.Value < Date - 6 Or dateRappel.Value > Date + 6 Then
            ' Non, passe a la ligne suivante
            GoTo skipDate
        End If

        mailBody = mailBody & vbNewLine & dateRappel.Value & " : La date d'échéance du marché n°" & dateRappel.Offset(0, -2).Value & dateRappel.Offset(0, -1).Value & " est arrivée à terme."
        counter = counter + 1   ' Date trouvee, on incremente le compteur

skipDate:
    Next dateRappel
    mailBody = mailBody & vbNewLine

    ' Aucune date trouvee, on quitte la fonction
    If counter = 0 Then
        MsgBox ("Aucune échéance pour ajourd'hui")
        Return
    End If

    ' Envoi du mail
    Call sendMail("adressemail", "TEST Rappel date d'échéance", mailBody)
End Sub

Mon problème est que ça ne boucle pas, lorsqu'une ligne provoque l'envoi du mail, les autres lignes sont ignorées.

Quelqu'un saurait-il m'aider ?

Bonjour Géronimo, le forum,

J'ai testé ta boucle, elle fonctionne correctement, voir le test ci-joint.

7test-boucle.xlsm (18.08 Ko)

Seulement,

Sauf erreur de ma part, tu n'incrémente jamais counter , puisque si oui tu vas directement à skipdate ?

Cordialement,

Bonjour xorsankukai et merci pour ton aide.

Il me semble que le compteur est bien incrémenté puisque dès lors qu'un mail est envoyé il n'y a pas de msgBox.

Il me semble que c'est l'instruction "return" qui est mal utilisée, car de mon côté, la boucle stop à la première date engendrant un mail.

8test.xlsm (27.58 Ko)
Rechercher des sujets similaires à "boucle qui fonctionne pas"