Envoi d'un mail séparés à plusieurs destinataire via listbox
Bonjour à tous,
Je débute un peu sur VBA pour excel que je l’utilise pour essayer d'automatiser quelques tâches. (Ma connaissance est assez limitée) et je bloque sur un point particulier.
J'ai une listbox qui affiche certaines lignes d'un tableau de suivi contenant nom et prénom et adresse mail.
Je souhaiterai pouvoir envoyer plusieurs mails séparément uniquement aux lignes présentes sur la ListBox.
Ci dessous le code que j'ai "tricoté" sans pouvoir pour autant arrivé à mon objectif. C A D utiliser les éléments de la Listbox pour envoyer un mail.
Merci par avance si quelqu'un peut m'aider...
PS : (Désolé pour l'amateurisme du code)
Private Sub CommandButton7_Click()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim OutApp As Object
Dim Outmail As Object
Dim strbody As String
Dim i As Long
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set Outmail = OutApp.CreateItem(0)
For i = ListBox1.ListCount - 1 To 0 Step -1
strbody = "<A>Mr/Mme " & ListBox1.List(i, 12).Value & " " & ListBox1.List(i, 13).Value & ", Bonjour,<br></A>" & _
"<A><br></A>" & _
"<A> Nous accusons réception de votre réclamation du " & ListBox1.List(i, 4).Value & ".<br></A>" & _
"<A> Cette réclamation a été enregistrée sous la référence " & ListBox1.List(i, 0).Value & " / " & ListBox1.List(i, 16).Value & ". <br></A>" & _
"<A><br></A>" & _
"<A> En application des dispositions de la ''Recommandation sur le traitement des réclamations'' émise par l'ACPR (Autorité de contrôle prudentiel et de résolution), le Service Réclamation de l'XXXX s'engage à respecter les délais de traitement suivants : <br></A>" & _
"<A><br></A>" & _
"<A><br></A>" & _
"<A> - dix jours ouvrables à compter de la réception de la réclamation, pour en accuser réception, même si la réponse elle-même est également apportée dans ce délai ; <br></A>" & _
"<A> - deux mois entre la date de réception de la réclamation et la date d'envoi de la réponse. <br></A>" & _
"<A><br></A>" & _
"<A><br></A>" & _
"<A>Cordialement,<br></A>" & _
"<A>Service Réclamation.<br></A>" & _
"<A>ADEP<br></A>" & _
"<A><br></A>"
On Error Resume Next
'---------------------------------------------------------
With oBjMail
.To = ListBox1.List(i, 2).Value
.CC = ("bidon@mail.com; vide@mail.com")
.Subject = "Accusé réception de la réclamation " & ListBox1.List(i, 1).Value & " / " & ListBox1.List(i, 16).Value & " 'l'objet du mail"
.HTMLBody = strbody
.Display
.Send
End With
Next i
ObjOutlook.Quit
Set oBjMail = Nothing
Set ObjOutlook = Nothing
End Sub
bonjour,
tu ne précises pas quel est le problème, tu ne mets pas de fichier qui nous permettrait de voir ce qui ne va pas ou de tester la proposition de solution
proposition de correction, non testé
Private Sub CommandButton7_Click()
Dim OutApp As Object
Dim Outmail As Object
Dim strbody As String
Dim i As Long
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
For i = ListBox1.ListCount - 1 To 0 Step -1
Set Outmail = OutApp.CreateItem(0)
strbody = "<A>Mr/Mme " & ListBox1.List(i, 12).Value & " " & ListBox1.List(i, 13).Value & ", Bonjour,<br></A>" & _
"<A><br></A>" & _
"<A> Nous accusons réception de votre réclamation du " & ListBox1.List(i, 4).Value & ".<br></A>" & _
"<A> Cette réclamation a été enregistrée sous la référence " & ListBox1.List(i, 0).Value & " / " & ListBox1.List(i, 16).Value & ". <br></A>" & _
"<A><br></A>" & _
"<A> En application des dispositions de la ''Recommandation sur le traitement des réclamations'' émise par l'ACPR (Autorité de contrôle prudentiel et de résolution), le Service Réclamation de l'XXXX s'engage à respecter les délais de traitement suivants : <br></A>" & _
"<A><br></A>" & _
"<A><br></A>" & _
"<A> - dix jours ouvrables à compter de la réception de la réclamation, pour en accuser réception, même si la réponse elle-même est également apportée dans ce délai ; <br></A>" & _
"<A> - deux mois entre la date de réception de la réclamation et la date d'envoi de la réponse. <br></A>" & _
"<A><br></A>" & _
"<A><br></A>" & _
"<A>Cordialement,<br></A>" & _
"<A>Service Réclamation.<br></A>" & _
"<A>ADEP<br></A>" & _
"<A><br></A>"
'On Error Resume Next
'---------------------------------------------------------
With Outmail
.To = ListBox1.List(i, 2).Value
.CC = "bidon@mail.com; <!-- e --><a href=""mailto:vide@mail.com"">vide@mail.com</a><!-- e -->"""
.Subject = "Accusé réception de la réclamation " & ListBox1.List(i, 1).Value & " / " & ListBox1.List(i, 16).Value & " 'l'objet du mail"
.HTMLBody = strbody
.Display
.Send
End With
Next i
OutApp.Quit
End Sub
Merci de ta réponse.
Je précise ma question :
Dans le fichier Excel ci-joint, sur l'onglets "Tableau de bord", ma demande concerne le bouton "Accusé de reception" et donc le USERFORM nommé "Formulaire AR".
Ce formulaire me permet déjà d'extraire les lignes dont j'ai besoin et de les répertorier sur la Listbox1. Jusqu'à là tout fonctionne plutôt bien mais c'est pour la suite que je bloque.
Une fois les lignes extraites sur la Listbox, je souhaiterai envoyé un mail d'Accusé de Réception uniquement à cette liste en utilisant les éléments de la listbox (Nom & Prénom, Adresse mail, N° de contrat, N° Chrono ....) et je n'y arrive pas j'ai essayé avec le code ci dessus mais ça ne marche pas.
J'espère avoir été clair, sinon je reste à disposition pour toute précision,
Merci encore
re-bonjour,
voici
Private Sub CommandButton7_Click()
Dim OutApp As Object
Dim Outmail As Object
Dim strbody As String
Dim i As Long
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
For i = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.Selected(i) Then
Set Outmail = OutApp.CreateItem(0)
strbody = "<A>Mr/Mme " & ListBox1.List(i, 12) & " " & ListBox1.List(i, 13) & ", Bonjour,<br></A>" & _
"<A><br></A>" & _
"<A> Nous accusons réception de votre réclamation du " & ListBox1.List(i, 4) & ".<br></A>" & _
"<A> Cette réclamation a été enregistrée sous la référence " & ListBox1.List(i, 0) & " / " & ListBox1.List(i, 16) & ". <br></A>" & _
"<A><br></A>" & _
"<A> En application des dispositions de la ''Recommandation sur le traitement des réclamations'' émise par l'ACPR (Autorité de contrôle prudentiel et de résolution), le Service Réclamation de l'XXXX s'engage à respecter les délais de traitement suivants : <br></A>" & _
"<A><br></A>" & _
"<A><br></A>" & _
"<A> - dix jours ouvrables à compter de la réception de la réclamation, pour en accuser réception, même si la réponse elle-même est également apportée dans ce délai ; <br></A>" & _
"<A> - deux mois entre la date de réception de la réclamation et la date d'envoi de la réponse. <br></A>" & _
"<A><br></A>" & _
"<A><br></A>" & _
"<A>Cordialement,<br></A>" & _
"<A>Service Réclamation.<br></A>" & _
"<A>ADEP<br></A>" & _
"<A><br></A>"
With Outmail
.To = ListBox1.List(i, 2)
.CC = "bidon@mail.com; <!-- e --><a href=""mailto:vide@mail.com"">vide@mail.com</a><!-- e -->"""
.Subject = "Accusé réception de la réclamation " & ListBox1.List(i, 1) & " / " & ListBox1.List(i, 16) & " 'l'objet du mail"
.HTMLBody = strbody
.Display
.Send
End With
End If
Next i
OutApp.Quit
End Sub
Merci ! ça fonctionne parfaitement !!