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
Envoi image
Code : Sélectionner tout - Visualiser dans une fenêtre à part Const Img_temp As String = "lerépertoire.imagetemp.jpg"
= Procédure Principale
Procédure annexe appelée dans la 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 créant l'image temporaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub Plage_Mail() Call Image_Temporaire End Sub
Comme mentionné plus haut, le code est effectif sur Excel 2003.
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
Sur Excel 2010, pour cette dernière procédure, erreur sur la ligne de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part .PastePourquoi?Erreur 1004
La méthode -Paste de l'Objet _Chart a échoué
J'ai cherché une explication, sans succès.
Par avance, merci.
Partager