Sub sendMail()
    Dim NomImage$, NomPdf, xOutApp As Object, xOutMail As Object, xHTMLBody As String, plage As Range
    Dim Destinataire$, CC$, Titre$, paragraph1$, paragraph2$
    'nom des fichiers necessaires
    NomImage = ThisWorkbook.Path & "\imgTemp.gif": If Dir(NomImage) <> "" Then Kill (NomImage)    ' ne pas toucher ça
    NomPdf = ThisWorkbook.Path & "\pdfTemp.pdf": If Dir(NomPdf) <> "" Then Kill (NomPdf)   ' adapter le chemin du fichier pdf
    Set plage = Feuil3.[A1:B11]    ' plage à envoyer dans le corps du mail
    '------------------------------
    'exportation des fichiers temporaires
    'création du pdf avec la plage
    plage.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomPdf, Quality:=xlQualityStandard, _
                              IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    'creation de la capture de la plage en image
    img = ExportRangeInImage(plage, NomImage)
    If img = "" Then MsgBox "la copie de la plage en image n'a pas pu etre effectué": Exit Sub
    '----------------------------
    'élements du mail
    Titre = "test de mail outlook VBA"    'titre du message
    Destinataire = "leeeee.ch@gmail.com"    'destinataire(s) du message( si plusieurs séparer  les par une virgule)
    CC = ""    ' accusé reception
    'texte que tu veux avantla plage dans le mail
    paragraph1 = "Bonjour Mr le directeur " & vbCrLf & "veuillez trouver ci joint  le tableau des ventes de concombres"
    paragraph1 = paragraph1 & vbCrLf & " il resume les ventes du mois "
    'texte que tu veux apres la plage dans le mail
    paragraph2 = " vous souhaitant bonne réception" & vbCrLf & "restant a votre disposition pour tout renseignement"
    paragraph2 = paragraph2 & vbCrLf & " votre dévoué serviteur  <font face=algerian color=red>le Concombre masqué</font>"
    '-----------------------------
    ' creation du mail outlook
    Set xOutApp = CreateObject("outlook.application")
    Set xOutMail = xOutApp.CreateItem(olMailItem)
    'création du code en html avec les éléments
    xHTMLBody = Replace(paragraph1, vbCrLf, "<br>") & "<br><br>" & _
                "<center><img src='imgTemp.gif'></center><br><br>" & _
                Replace(paragraph2, vbCrLf, "<br>")
    'application dans outlook
    With xOutMail
        .Subject = Titre    'titre du message
        .HTMLBody = xHTMLBody    'corps du mail avec insertion de la plage en image entre les deux paragraph
        .Attachments.Add NomPdf    ' on attache le pdf
        .Attachments.Add NomImage    ', olByValue, 0   ' on attache l'image de la plage
        .To = Destinataire    'destinataire
        .CC = CC   ' accusé
        '.display    ' soit on affiche l'application outlook
        .Send      ' soit on envoie direct
    End With
    'on peut supprimer le pdf temporaire et l'image temporaire de la plage
    ' If Dir(NomImage) <> "" Then Kill NomImage' à débloquer si mode ".send"
    'If Dir(NomPdf) <> "" Then Kill NomPdf' à débloquer si mode ".send"
    xOutApp.Quit
    ' vide les variable
    Set oEmail = Nothing
    Set colAttach = Nothing
    Set oAttach = Nothing
    Set xOutApp = Nothing
End Sub
Function ExportRangeInImage(plage As Range, CheminX As String)
'export plage en gif patricktoulon sur exceldownloads
    Dim chart1 As Object
    If Dir(CheminX) <> "" Then Kill CheminX
    With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With    'on vide le clipboard entre chaque copie pour tester vraiment le available
    plage.CopyPicture
    Set chart1 = plage.Parent.ChartObjects.Add(0, 0, 0, 0).Chart
    With chart1
        With .Parent
            .Width = plage.Width: .Height = plage.Height: .Left = plage.Width + 20:
            Do: .Chart.Paste: DoEvents: Loop While .Chart.Pictures.Count = 0
            .Chart.Export CheminX, "gif"
        End With
    End With
    chart1.Parent.Delete
    ExportRangeInImage = Dir(CheminX)
End Function