Bonjour le Forum,

Je souhaite copier une plage de cellule dans mon corps de texte mail, via une image temporaire.

Cette méthode était effective sur Excel 2003. Elle est en échec sur Excel 2010.

La méthode utilisée
- emploi de Outlook.application
- création image temporaire
- collage dans le corps de texte par SendKeys

Soit

Déclaration variable (image temporaire) à portée module

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Const Img_temp As String = "lerépertoire.imagetemp.jpg"
Envoi image
= Procédure Principale

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
Sub Envoi_Documents()
 
Dim Applic_Outlook As Outlook.Application
Dim MonItem As Outlook.MailItem
Dim Document As Range
Dim Objet_Mail As String
Dim Adresse_Mail As String
Dim Fichier_joint As String
 
'Crée l'objet Outlook
Set Applic_Outlook = New Outlook.Application
 
 
'Créer l'élément de mail et le transmettre
Set MonItem = Applic_Outlook.CreateItem(olMailItem)
With MonItem
        .To = l_dest
        .Subject = Objet_Mail
        .cc = "tralala@citron.fr"
        .Categories = "Daily"
        Fichier_joint = "\\lechemin.monfichier.pdf"
        .Attachments.Add Fichier_joint
        Application.wait (Now + TimeValue("0:00:01"))
        .Display
End With
 
'copie du corps de texte dans le corps de message
Call Plage_Mail
Application.wait (Now + TimeValue("00:00:05"))
AppActivate Objet_Mail & " - Message", 0   ' Active Outlook
Application.wait (Now + TimeValue("00:00:05"))
SendKeys "^v", True  ' coller
Application.wait (Now + TimeValue("00:00:05"))
SendKeys "%v", True  ' Envoi du message
Application.CutCopyMode = False
 
Set Applic_Outlook = Nothing
 
ActiveWindow.DisplayGridlines = True
 
End Sub
Procédure annexe appelée dans la procédure principale

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Sub Plage_Mail()
Call Image_Temporaire
End Sub
Procédure annexe créant l'image temporaire

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
Sub Image_Temporaire(Optional dummy As Byte)
Dim cellule_corp As Range
Dim image_chart As ChartObject
On Error Resume Next
For Each image In ActiveSheet.Charts
    image.Delete
Next
On Error GoTo 0
Set cellule_corp = Range("corps_3")
With cellule_corp
    .Columns.AutoFit
    .CopyPicture xlScreen, xlBitmap
    Set image_chart = ActiveSheet.ChartObjects.Add( _
        .Left, .Top, .Width, .Height)
End With
With image_chart.Chart
     .Paste
    .Export FileName:=Img_temp
End With
image_chart.Delete
Set image_chart = Nothing
Set cellule_corp = Nothing
End Sub
Comme mentionné plus haut, le code est effectif sur Excel 2003.
Sur Excel 2010, pour cette dernière procédure, erreur sur la ligne de code

Erreur 1004
La méthode -Paste de l'Objet _Chart a échoué
Pourquoi?

J'ai cherché une explication, sans succès.

Par avance, merci.