Copier un tableau dans outlook en format image

Résolu
fabkiller78 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
fabkiller78 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Après plusieurs recherches et essais je me résigne à demander votre aide.

J'ai créé une macro qui met à jour un tableau de ventes journalière que je copie ensuite en image dans le corps d'un mail qui comprend également du texte.

J'aimerais inclure dans la macro de création d'email, l'image d'un tableau excel dans le corps du mail.
Voici mon code qui fonctionne parfaitement mais dont je voudrais inclure dans le corps du mail une image d'un tableau excel mais pour l'instant en vain

Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)

corps_mail = "Bonjour, " & vbNewLine & vbNewLine & "Veuillez trouver ci-dessous les ventes jour au " & Format(JourJ, "dd/mm/yyyy") & "." & vbNewLine & vbNewLine & vbNewLine & "Bien cordialement

On Error Resume Next
With OutMail
.To = "ventesjour"
.CC = ""
.BCC = ""
.Subject = "Ventes jour au " & Format(JourJ, "dd/mm/yyyy")
.Body = corps_mail
.Display

End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing

Comme vous pouvez le voir dans le code je crée l'email avec toutes les infos pour un envoi automatique sauf le tableau excel que je suis obligé de coller manuellement en image.

L'image du tableau à inclure se trouve dans l'onglet "Daily sales", range ("B2:X53")
Le fichier est forcément ouvert et l'onglet "Daily sales" est déjà activée

Si quelqu'un a une solution je suis preneur

Merci

A voir également:

6 réponses

Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   40
 
Bonjour,
Une solution partielle, ajoutez la copie en image dans le code

Range("B2:X53").CopyPicture xlScreen, xlBitmap

Puis faites un Ctrl V à l'emplacement souhaité dans le corps de l'email Outlook.
1
fabkiller78 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

J'aimerais que tout soit en automatique.
j'ai essayé votre solution en intégrant dans corpsmail un "selection.paste" mais la macro plante sur cette ligne du coup.
Après plusieurs recherches et essais je me demande si il ne serait pas plus simple de passer par word ou powerpoint dans la macro ?
C'est à dire faire une copie image vers word et récupérer cette image de word pour l'inclure dans le corps du mail
0
Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   40
 
Dans ce cas, je pense qu'il faut faire le message au format HTML dans lequel on peut insérer une image par code.
Grand jour de bonté, après quelques essais, voici le code adapté :


Dim Img As String, Plage As Range, PathTmp As String
PathTmp = Environ$("temp") & ""
Img = "Image.jpg"
Set Plage = Range("B2:X53")

'Création d'un fichier image dans le répertoire temporaire
Plage.CopyPicture
With ActiveSheet.ChartObjects.Add(0, 0, Plage.Width, Plage.Height)
.Activate
.Chart.Paste
.Chart.Export PathTmp & Img, "JPG"
End With

ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Delete



Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(olMailItem)

With OutMail
.TO = "ventesjour"
'.CC = ""
'.BCC = ""
.Subject = "Ventes jour au " & Format(JourJ, "dd/mm/yyyy")
.Attachments.Add PathTmp & Img, olByValue, 0
.HTMLBody = "<span LANG=FR><p class=style2>" _
& "<font FACE=Calibri SIZE=3>Bonjour,<br><br>" _
& "Veuillez trouver ci-dessous les ventes jour au " _
& Format(JourJ, "dd/mm/yyyy") & "<br><br>" _
& "Bien cordialement<br><br>" _
& "<img src='cid:" & Img & "'</font></span>"

.Display
End With

On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
Kill PathTmp & Img
0
fabkiller78 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Hello Normad,

Merci pour cette solution, je pense qu'on touche au but
Il me met une image vide dans le corps du mail avec inscrit :

"impossible d'afficher l'image liée. Le fichier a peut être été déplacé, renommé ou supprimé. Vérifier que la liaison pointe vers le fichier et l'emplacement correct"

j'essaye de modifié le code mais en vain pour l'instant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   40
 
Bonjour,
Chez moi celà fonctionne parfaitement.

Vous avez essayé de modifier quoi ?

Vu le message d'erreur, je commencerais par supprimer la
dernière ligne :
Kill PathTmp & Img
(Cette ligne efface l'image créé dans votre dossier temporaire).

Si après suppression celà fonctionne, il faudra faire la suppression du fichier éventuellement déjà existant en début de procédure, soit juste après les lignes :

Dim Img As String, Plage As Range, PathTmp As String
PathTmp = Environ$("temp") & ""
Img = "Image.jpg"

ajouter cette ligne :
If Dir(PathTmp & Img) <> "" Then Kill PathTmp & Img

Sinon mettez le code complet de la procédure.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

@Normad : Le problème est lié à un bug connu sur CCM...
Ta ligne de code : PathTmp = Environ$("temp") & "\" a été transformée à cause des balises code, par le site commentçamarche.net, en PathTmp = Environ$("temp") & ""
Cela ne peut donc pas fonctionner.

@fabkiller78 : remplace donc
PathTmp = Environ$("temp") & ""

par
PathTmp = Environ$("temp") & "\"
0
fabkiller78 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Un grand merci à vous 2
Il suffisait effectivement de modifier la ligne PatchTmp afin que ça fonstionne
Mon problème est résolu
0