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 !!

Rechercher des sujets similaires à "envoi mail separes destinataire via listbox"