Envoi mail avec pièce jointe

Gwendoline

XLDnaute Junior
Bonjour la Team,
Que ça fait plaisir de revenir sur ED, plus de 20 ans de création :)

Mon problème, et j'avoue ne pas comprendre, je tente en vain d'envoyer un mail depuis Outlook avec PJ.
Avant ça fonctionnait, plus maintenant, ça ne m'aime plus à partir de la ligne 36 With oBjMail etc...

Sauriez-vous ou je suis dépassée?

Merci.

Ci-dessous le code et le fichier, important :)

VB:
Sub EnvoiMail()
'par KCI le 17.12.20

'définition des variables
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim MonSujet As String 'Objet du mail
Dim MonDestinataire As String
Dim MonContenu As String 'Corps du mail
Dim MaPJ As String 'Fichier Zip


Sheets("Mail").Activate
    MonSujet = Range("A1").Value & Range("C1").Value
    MonContenu = Range("A3").Value & Chr(10) & Chr(10) & Range("A4").Value & Chr(10) & _
             Range("A5").Value & Chr(10) & Range("A6").Value & Chr(10) & Chr(10) & _
             Range("A7").Value & Chr(10) & Chr(10) & Range("A8").Value
Sheets("ListeDistribution").Activate
i = 2 'i est le N° de ligne dans la feuille ListDistribution

    MonDestinataire = Cells(i, 3).Value

While i <> "" 'tant que la ligne sélectionnée dans ListeDistribution n'est pas vide, la VBA s'exécutera
    MaPJ = Sheets("ListeDistribution").Cells(i, 9).Value
    
    With oBjMail
        .To = MonDestinataire
        .Subject = MonSujet
        .Body = MonContenu
        .Attachments.Add MaPJ
        .Send
    End With
Set oBjMail = Nothing
    Set ObjOutlook = Nothing
        
        i = i + 1
Wend

MsgBox "Envoi terminé"

ObjOutlook.Quit

End Sub
 

Pièces jointes

  • VBA Mail EP.xlsm
    32.9 KB · Affichages: 9

patricktoulon

XLDnaute Barbatruc
Bonjour @Gwendoline
tu n'est pas sur le bon forum


et c'est pas bon du tout
travaille en late binding au cas ou se serait la ref outlook qui soit pas activé
et objmail n'est pas instancié
et ta boucle while c'est pas bon le principe ca tourne sans fin
essai plutôt ça
VB:
Sub EnvoiMail()
'patricktoulon

'définition des variables
    Dim ObjOuTlook As Object, oBjMail As Object, MonSujet$, MonDestinataire$, MonContenu$, MaPJ$

    Set fdistri = Sheets("ListeDistribution")


    With Sheets("Mail")    '.Activate
        MonSujet = .Range("A1").Value & .Range("C1").Value
        MonContenu = .Range("A3").Value & Chr(10) & Chr(10) & .Range("A4").Value & Chr(10) & _
                     .Range("A5").Value & Chr(10) & .Range("A6").Value & Chr(10) & Chr(10) & _
                     .Range("A7").Value & Chr(10) & Chr(10) & .Range("A8").Value
    End With



 
  Set ObjOuTlook = CreateObject("outlook.application")

     
  For i = 2 To fdistri.Cells(Rows.Count, 1).End(xlUp).Row   'tant que la ligne sélectionnée dans ListeDistribution n'est pas vide, la VBA s'exécutera"
        MaPJ = fdistri.Cells(i, 9).Value
        MonDestinataire = fdistri.Cells(i, 3).Value

         Set oBjMail = ObjOuTlook.CreateItem(0)

        With oBjMail
            .To = MonDestinataire
            .Subject = MonSujet
            .Body = MonContenu
            .Attachments.Add MaPJ
            '.display
            .Send
        End With
        Set oBjMail = Nothing
    Next

    ObjOuTlook.Quit
    Set ObjOuTlook = Nothing

    MsgBox "Envoi terminé"


End Sub
 
Dernière édition: