Copier un tableau dans outlook en format image

Résolu/Fermé
fabkiller78 Messages postés 11 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 25 septembre 2014 - 19 sept. 2014 à 11:56
fabkiller78 Messages postés 11 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 25 septembre 2014 - 25 sept. 2014 à 11:06
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 dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
22 sept. 2014 à 08:36
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 lundi 21 juillet 2014 Statut Membre Dernière intervention 25 septembre 2014
23 sept. 2014 à 14:51
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 dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
24 sept. 2014 à 11:04
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 lundi 21 juillet 2014 Statut Membre Dernière intervention 25 septembre 2014
24 sept. 2014 à 13:54
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 dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
25 sept. 2014 à 10:14
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
25 sept. 2014 à 10:33
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 lundi 21 juillet 2014 Statut Membre Dernière intervention 25 septembre 2014
25 sept. 2014 à 11:06
Un grand merci à vous 2
Il suffisait effectivement de modifier la ligne PatchTmp afin que ça fonstionne
Mon problème est résolu
0