Coller l'image de cellules Excel dans un mail Outlook (2016)
Bonjour le Forum,
(mes excuses pour cette absence, débordé)
Je crée un objet Outlook dans lequel je veux insérer une image de quelques cellules de mon classeur.
Pour ce faire,
Exportation des cellules en ".png"
Utiliser le presse-papier pour coller l'image ainsi créée dans mon mail
Sur Excel 2010, j'arrivais à simuler CTRL+V par la méthode Sur Excel 2016, échec : la ligne de code est inactive
Manuellement, si j'effectue CTRL+V, le presse-papier est bien actif et la copie sur le mail se réalise très bien.
Y aurait-il un élément de changé sur Excel 2016?
PS : la méthode HTMLBODY fonctionne mais je cherche à savoir.
Création Outlook
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| Option Explicit
Sub Envoi_Documents()
'Utilise la liaison anticipée
'Requiert une référence à la bibliothèque d'objets Outlook
Dim Applic_Outlook As Outlook.Application
Dim MonItem As Outlook.MailItem
With Worksheets("Mail")
.Visible = True
.Select
End With
Application.ScreenUpdating = True
'Crée l'objet Outlook
Set Applic_Outlook = New Outlook.Application
Set MonItem = Applic_Outlook.CreateItem(olMailItem)
With MonItem
.To = "marcel@citron.fr"
.Subject = "Coucou"
.Display
'copie du corps de texte dans le corps de message
Call Exporte_img
AppActivate "Coucou - Message", 0 ' Active Outlook
SendKeys "^V", True ' coller
.Send
End With
Application.CutCopyMode = False
Set MonItem = Nothing
Set Applic_Outlook = Nothing
End Sub |
Exportation des cellules en image
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Sub Exporte_img()
Dim cells_img As Range
Dim export_img As Variant
Dim S As Shape
export_img = "lechemin\image.png"
With Worksheets("Mail")
.Visible = True
.Select
On Error Resume Next
For Each S In .Shapes
S.Delete
Next S
On Error GoTo 0
Set cells_img = .Range("corps_3")
Application.Goto reference:="R1C105"
' Création d'une zone de graphique (de type histogramme, mais vide de toute façon...) et sélection de celle-ci
.Shapes.AddChart2(201, xlColumnClustered).Select
' Redimentionnement à la taille de la zone de cellules
.Shapes(1).Height = cells_img.Rows.Height * 2
.Shapes(1).Width = cells_img.Columns.Width * 2
.Shapes(1).ScaleWidth 0.5, msoFalse
.Shapes(1).ScaleHeight 0.5, msoFalse
' Copier la zone de cellules sous forme d'image
cells_img.CopyPicture xlScreen, xlPicture
' Collage dans la zone de graphique
ActiveChart.Paste
' Export sous forme d'image
ActiveChart.Export FileName:=export_img, FilterName:="PNG"
' Retour à la normale
.Shapes(1).Delete
End With
End Sub |
Par avance, merci pour vos retours