Inserer tableau excel dans mail outlook

wil2168 -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'essaye d'envoyer une feuille excel dans le corps d'en mail Outlook via vba
j'ai le code ci-dessous….mais cela ne fonctionne pas
Sub mail_outlook()

Dim AppOutlook As Outlook.Application
Dim mon_mail As Outlook.MailItem
Dim MaDate As Date


Set AppOutlook = CreateObject("Outlook.application")
Set mon_mail = AppOutlook.CreateItem(olMailItem)



Dim ma_feuille As Worksheet
Dim nb_ligne_operations As Integer


Set ma_feuille = ThisWorkbook.Sheets("operations")


Application.ScreenUpdating = False

nb_ligne_operations = ma_feuille.Range("B" & Application.Rows.Count).End(xlUp).Row

ma_feuille.Range("B2:M" & nb_ligne_operations).Select




                             With Selection.Parent.MailEnvelope.Item
                             .To = ma_feuille.Range("O1").Value
                           
                             .CC = "***@***"
                             .Subject = "BOB HLU / Pending trades vd"
                             .mail.attachements.Add "c:\update_sony_20180121"
                             .Display
                           
                            End With





Application.ScreenUpdating = True

End Sub

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour
    .mail.attachements.Add "c:\update_sony_20180121"                                                   
    


    N'aurais tu pas oublié d'indiquer l'extension du fichier ?
    0
  2. wil2168
     
    bonjour

    en faite la ligne de code ne doit pas être mise
    elle sert à mettre le fichier en pièce jointe
    moi je souhaite avoir mon tableau excel dans le corps de mon mail
    0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Une rapide recherche amène sur des liens tel que
    https://social.msdn.microsoft.com/Forums/en-US/693f49a6-973a-4258-af3c-7ec05e1bb7a1/excel-vba-to-copy-table-to-outlook-body?forum=exceldev

    Qui indique
    Dans un module, coller le code :
    Function RangetoHTML(rng As Range)
    
        Dim fso As Object
        Dim ts As Object
        Dim TempFile As String
        Dim TempWB As Workbook
    
        TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    
        'Copy the range and create a new workbook to past the data in
        rng.Copy
        Set TempWB = Workbooks.Add(1)
        With TempWB.Sheets(1)
            .Cells(1).PasteSpecial Paste:=8
            .Cells(1).PasteSpecial xlPasteValues, , False, False
            .Cells(1).PasteSpecial xlPasteFormats, , False, False
            .Cells(1).Select
            Application.CutCopyMode = False
            On Error Resume Next
            .DrawingObjects.Visible = True
            .DrawingObjects.Delete
            On Error GoTo 0
        End With
    
        'Publish the sheet to a htm file
        With TempWB.PublishObjects.Add( _
             SourceType:=xlSourceRange, _
             Filename:=TempFile, _
             Sheet:=TempWB.Sheets(1).Name, _
             Source:=TempWB.Sheets(1).UsedRange.Address, _
             HtmlType:=xlHtmlStatic)
            .Publish (True)
        End With
    
        'Read all data from the htm file into RangetoHTML
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
        RangetoHTML = ts.readall
        ts.Close
        RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                              "align=left x:publishsource=")
    
        'Close TempWB
        TempWB.Close savechanges:=False
    
        'Delete the htm file we used in this function
        Kill TempFile
    
        Set ts = Nothing
        Set fso = Nothing
        Set TempWB = Nothing
    End Function
    


    et pour l'envoi du mail
    Sub Mail_Selection_Range_Outlook_Body()
    
        Dim rng As Range
        Dim OutApp As Object
        Dim OutMail As Object
    
        Set rng = Nothing
        On Error Resume Next
        'Only the visible cells in the selection
        Set rng = Selection.SpecialCells(xlCellTypeVisible)
        'You can also use a fixed range if you want
        'Set rng = Sheets("YourSheet").Range("D4:D12").SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
    
        If rng Is Nothing Then
            MsgBox "The selection is not a range or the sheet is protected" & _
                   vbNewLine & "please correct and try again.", vbOKOnly
            Exit Sub
        End If
    
        With Application
            .EnableEvents = False
            .ScreenUpdating = False
        End With
    
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
    
        On Error Resume Next
        With OutMail
            .To = "***@***"
            .CC = ""
            .BCC = ""
            .Subject = "This is the Subject line"
            .HTMLBody = RangetoHTML(rng)
    '        .Body = Selection.Paste
            .Display   'or use .Send  // Le temps des tests, utiliser Display pour voir le résultat, puis après, une fois ok, remplacer par .Send pour envoyer le mail.
        End With
        On Error GoTo 0
    
        With Application
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    
        Set OutMail = Nothing
        Set OutApp = Nothing
    
    End Sub
    

    0