Envoyer un onglet en format image dans Outlook

Bonjour,

je me permets de me tourner vers vous car je suis dans une impasse.

J'aimerais afficher un onglet d'un classeur dans un nouveau mail Outlook, j'ai opté pour un format image.

Pour ce faire j'ai choisi de copier ( la feuille qui m’intéresse), je la colle ensuite, en format image, dans un onglet temporaire ( qui ne me sert qu'a ça).

La où je bloque c'est dans la gestion de cette image pour l’intégrer dans Outlook.

Mes connaissances, en VBA, étant un peu limité je n'arrive pas à "stocker" cette image dans une variable...(même si je pense qu'un objet serait plus adapté).

Auriez vous des solutions pour gérer ce type de données ? Peut-être que je m'y prend mal pour affecter l'image a un objet.

Merci d'avancer pour vos retours

Dardy

Bonjour Dardy,

à tester,

Sub SendRangeByMail()
Dim rngeSend As Range

With Application
    On Error Resume Next
    Set rngeSend = Sheets("Feuil1").Range(Range("A1").CurrentRegion.Address) 'à adapter
    If rngeSend Is Nothing Then Exit Sub
    sFile = Environ("Temp") & "\XLRange.htm"
    On Error GoTo 0
    .ActiveWorkbook.PublishObjects.Add(4, sFile, rngeSend.Parent.Name, rngeSend.Address, 0, "", "").Publish True
    Call PrepareOutlookMail(sFile)
    Kill sFile
End With
End Sub
Sub PrepareOutlookMail(sFileName)
Dim appOutlook As Outlook.Application
Dim oMail As Outlook.MailItem

   Set appOutlook = CreateObject("Outlook.Application")
   If Not (appOutlook Is Nothing) Then
      Set oMail = appOutlook.CreateItem(olMailItem)
        With oMail
         .To = "Adresse@mail.fr"
         .Subject = "Le sujet"
         .HTMLBody = ReadFile(sFileName)
'         .Attachments.Add (ThisWorkbook.FullName)
         .Display  'metre cette ligne en commentaire pour éviter l'affichage du mail
  '       .Send    'mettre cette ligne active pour l'envoi du mail sans qu'il soit affiché
        End With
      Set oMail = Nothing
      Set appOutlook = Nothing
   End If
End Sub

Public Function ReadFile(sFileName) As String
Dim fso As Object, fFile As Object
Dim sTemp As String
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set fFile = fso.OpenTextFile(sFileName, 1, False)
   sTemp = fFile.ReadAll
   fFile.Close
   Set fFile = Nothing
   ReadFile = sTemp
End Function

bonjour i20100,

Merci pour cette réponse.

J'ai testé mais la macro n'affiche pas toute ma range, elle ne m'affiche que les premières lignes de ma feuille peu importe la range renseigné sur rngeSend.

J'ai vu que rngeSend est intégré au mail comme un tableau. Il n'est pas possible d'exporter la feuille en format image ? (objet Shape ou autre ?) Parce que avant de l’intégrer j'aimerais redimensionner l'image crée (si il n'y a pas solution technique adaptée, je peux m'en passer).

Je pensais partir une solution qui enregistre l'image en local sur le pc pour la réutiliser dans le mail, puis l’intégrer dans le corps HMTL. Mais je me demande si c'est vraiment adapté sachant que cette macro serai utilisée par des personnes sur leurs pc respectifs.

Dardy

re,

nouvelle proposition à tester,

Sub Mail_Plage_en_image()

    Dim objOL As Object, ObjMail As Object
    Dim oAttach As Object, ColAttach As Object
    Dim Plage As Range, Pth As String, image As String, file As String

    Set Plage = Range("A1:B4")   'à adapter
    Pth = ThisWorkbook.Path
    file = Pth & "\" & "MailImage.jpg"

    Set objOL = CreateObject("Outlook.Application")
    Set ObjMail = objOL.CreateItem(0)
    Set ColAttach = ObjMail.Attachments
    Set oAttach = ColAttach.Add(file) 'Changer le chemin et le nom de l'image

    With ObjMail
        .To = "test@yy.com"  'à adapter
'        .CC = ""
        .Subject = "test"  'à adapter
        .HTMLBody = "<BODY><FONT face=Arial color=#000080 size=2></FONT>" & _
            "Bonjour, <br><br><IMG src=cid:MailImage.jpg></BODY>"   'Nom de l'image sans chemin

        .Display    'Send   Display permet d'afficher le message, Send l'envoie sans affichage
    End With

    Set oAttach = Nothing
    Set ColAttach = Nothing
    Set ObjMail = Nothing
    Set objOL = Nothing
End Sub

Bonjour i20100,

Merci pour votre réponse, j'ai finalement trouvé une alternative en me basant sur une solution que vous avez trouvé sur l'import d'un graphique dans un corps de mail. J'ai donc insérer mon image dans un graph et inserer celui-ci dans le mail et ça fonctionne .

Par contre j'ai un dernier soucis, je dois faire un "clic-droit > Habillage > centré", dans Outlook, pour que mon image s'affiche bien dans le mail, une fois celui-ci envoyé.

Ca peut se gérer avec le code HTML ? ( j''ai essayé un text-align, ca n'a rien changé )

Dardy

Bonjour Dardy,

j'ai réussi à mettre l'image à droite mais pas à la centrer,

.HTMLBody = "<BODY><FONT face=Arial color=#000080 size=2></FONT>" & text1 & _
            ", <br><br><img  align=RIGHT src='cid:MailImage.jpg'" & "width='200' height='150'><br></BODY>"

j'espère qu'un autre contributeur pourra nous éclairer à ce sujet.

Rechercher des sujets similaires à "envoyer onglet format image outlook"