Problème lors d'une boucle pour envoi email

Bonjour au forum,

J'ai écris ce bout de code qui permet de m'envoyer un email lorsque la date dans la colonne J est égale à la date du jour.

Je rencontre un problème lorsque plusieurs itérations sont présentes dans cette colonne J (donc plusieurs fois la date du jour), je n'arrive pas à comprendre ni à trouver mon erreur...

Private Sub email()

Dim Ligne As Integer
Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem

Set olApp = CreateObject("outlook.application")
Set olMail = olApp.CreateItem(olMailItem)

For Ligne = 2 To Range("A" & Rows.Count).End(xlUp).Row
    If Date = Range("J" & Ligne) Then
        With olMail
         .Subject = "xxxxxx"
         .To = "xxx.xxx@xx.xxx" 'Range("D" & Ligne)
         .Body = "Bonjour Jessica," & vbCrLf & vbCrLf & "M. " & Range("B" & Ligne) & " va débuter sa formation " & Range("E" & Ligne) & _
         " avec le manager " & Range("D" & Ligne) & " le " & Range("G" & Ligne) & "." & vbCrLf & vbCrLf & "Bonne fin de journée !"
         .send '.Display
        End With
    End If
Next Ligne
End Sub

Merci d'avance pour votre aide

5nrev.xlsm (16.86 Ko)

Bonjour,

Si j'ai bien compris ta demande, tu veux un seul courriel pour toutes les lignes de la date du jour.

Pour fin de test .Send est en commentaire ... .Display est actif.

Un essai ...

Sub email()

Dim Ligne As Integer, Ligne2 As Integer
Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem
Dim Messag

   Set olApp = CreateObject("outlook.application")
   Set olMail = olApp.CreateItem(olMailItem)

   For Ligne = 2 To Range("A" & Rows.Count).End(xlUp).Row
      If Date = Range("J" & Ligne) Then
         With olMail
            .Subject = "xxxxxx"
            .To = "xxx.xxx@xx.xxx"   'Range("D" & Ligne)

            For Ligne2 = 2 To Range("A" & Rows.Count).End(xlUp).Row
               If Date = Range("J" & Ligne2) Then
                  Messag = Messag & "M. " & Range("B" & Ligne2) & " va débuter sa formation " & Range("E" & Ligne2) & _
                           " avec le manager " & Range("D" & Ligne2) & " le " & Range("G" & Ligne) & "." & _
                           Chr(10) & Chr(10)
               End If

            Next Ligne2
            .Body = "Bonjour Jessica," & vbCrLf & vbCrLf & Messag & vbCrLf & vbCrLf & "Bonne fin de journée !"

            .Display
            '         .Send
         End With
         Exit For
      End If
   Next Ligne
End Sub

ric

Bonsoir,

Sur une application en téléchargement, "Alerte anniversaire", j'ai du ajouter la commande : Application.Wait pour éviter d'avoir une erreur suite à l'envoie consécutif de plusieurs mails...

Je na sais si c'est normale mais en tous cas ceci à résolu le problème :

Application.Wait (Now + TimeValue("00:00:02"))

Ce qui ajoute une tempo de deux secondes entre chaque envoie.

@ bientôt

LouReeD

Doublon ... désolé pour l'erreur

ric

Bonjour Ric, LouReed,

Merci beaucoup pour vos réponses.

J'ai testé vos deux solutions, qui fonctionnent, et ai opté pour celle de Ric, qui correspond parfaitement à ce que je souhaitais

Merci infiniment à vous !

Rechercher des sujets similaires à "probleme lors boucle envoi email"