Boucle qui ne fonctionne pas
G
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 SubMon 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.
Seulement,
Sauf erreur de ma part, tu n'incrémente jamais counter , puisque si oui tu vas directement à skipdate ?
Cordialement,
G
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.