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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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