XL 2013 Création d'un mail VBA

erwanhavre

XLDnaute Occasionnel
Bonjour les Exceliens
J'ai besoins de vous pour un p'tit truc
Voila j'ai sur une feuille excel une liste d'adresses mails séparée par des ";" en cellule K3 et un objet en cellule D3 je cherche un bout de code qui m'ouvrirai Outlook et me créerai ce mail avec les infos ci-dessus
Pouvez vous m’aider ?
Merci
 

Valtrase

XLDnaute Occasionnel
Bonjour le fil
Trouvé sur Excel Malin, mais tu dois avoir plein d'exemple sur ce site
Code:
'————————   REFERENCES   ———————————————————————————————————
' Microsoft Outlook XX.0 Object Library

Sub EnvoyerEmail()
' Par Excel-Malin.com ( https://excel-malin.com )
' Adapté par Valtrase
' Date      : 06/08/2019

    On Error GoTo EnvoyerEmail_Erreur
    Dim oOutlook As Outlook.Application, WasOutlookOpen As Boolean, oMailItem As Outlook.MailItem
    Dim Body As Variant, Subject As String
    Dim Filename1 As String, LineHeader As String, sFolder As String

    Subject = "Documents chantier XXX"

    Body = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">" & _
           "<HTML><HEAD>" & _
           "<META http-equiv=Content-Type content=""text/html; charset=iso-8859-1"">" & _
           "<META content=""MSHTML 6.00.2800.1516"" name=GENERATOR></HEAD>" & _
           "<BODY><DIV STYLE=""font-size: 16px; font-face: Book Antiqua;"">"
        
    Body = Body & "Bonjour,<br>Merci de trouver les documents demandés en pièces jointes."
  
    'Préparer Outlook
    PreparerOutlook oOutlook
    Set oMailItem = oOutlook.CreateItem(0)
        
    With oMailItem
        
        '.From = SendFrom
        If (Range("Send.To")) <> "" Then .To = Range("K3")
        If Range("Send.ToCopy") <> "" Then .cc = Range("Send.ToCopy")
        .Subject = Subject
        .BodyFormat = olFormatHTML
        .HTMLBody = Body & "<br><br>" & .HTMLBody               'Signature
        .Attachments.Add Range("D3")
        .Display                                            '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire)
        '.Save      '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire)
        '.Send      '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire)
    End With

EnvoyerEmail_Exit:
    If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
    If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

    Exit Sub

EnvoyerEmail_Erreur:

    MsgBox "Oupss... le mail n'a pas pu être envoyé..." & vbNewLine & Err, vbCritical, "Erreur"
    Resume EnvoyerEmail_Exit
End Sub
 

Valtrase

XLDnaute Occasionnel
ça y est ... mais je bloque .. à
PreparerOutlook oOutlook
Set oMailItem = oOutlook.CreateItem(0)
Oupssss J'ai peut-être oublié quelque chose ...:rolleyes:
VB:
Private Sub PreparerOutlook(ByRef oOutlook As Object)
'par Excel-Malin.com ( https://excel-malin.com )
'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.

    On Error GoTo PreparerOutlookErreur


    On Error Resume Next
    'vérification si Outlook est ouvert
    Set oOutlook = GetObject(, "Outlook.Application")

    If (Err.Number <> 0) Then                                   'si Outlook n'est pas ouvert, une instance est ouverte
        Err.Clear
        Set oOutlook = CreateObject("Outlook.Application")
    Else                                                        'si Outlook est ouvert, l'instance existante est utilisée
        Set oOutlook = GetObject("Outlook.Application")
        oOutlook.visible = True
    End If
    Exit Sub

PreparerOutlookErreur:
    MsgBox "Oups..." & vbNewLine & "Nous n'avons pas pu charger Outlook !"
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Une petit exemple (à adapter selon besoins)
VB:
Sub test_Envoie_Mail()
Dim vDestinataires$, vObjet$
vDestinataires = Sheets(1).Range("K3")
vObjet = Sheets(1).Range("D3").Text
  With CreateObject("Outlook.Application").CreateItem(0)
      .To = vDestinataires
      .Subject = vObjet
      .Body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
      .Display
      '.Send
  End With
End Sub
 

Valtrase

XLDnaute Occasionnel
Salut le fil, ErvanHavre
C'est quoi qui ne fonctionne pas, dis en un peu plus, je me serts de ce code toutes les semaines, le seul bug que j'ai de temps en temps c'est quand Outlook n'est pas lancé, le courriel reste dans la boite d'envoie...
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16