Signaler

VBA envoi TCD dans le corps d'un email [Résolu]

Posez votre question agathe182 33Messages postés mercredi 24 août 2016Date d'inscription 23 septembre 2016 Dernière intervention - Dernière réponse le 22 sept. 2016 à 15:05
Bonjour,
Je suis en train d'essayer d'envoyer un tableau croisé dynamique par e-mail. Il y a un slicer sur le tableau qui peut filtrer par marché et je souhaiterai envoyer à chaque marché le tableau croisé dynamique par mail dans le corps du mail et pas en pièce jointe.
J'ai fait plusieurs tests mais je ne parviens pas à insérer le tableau croisé dynamique comme je le souhaiterai. J'ai essayé de copier le tableau dans une nouvelle feuille, d'envoyer cette feuille par e-mail et ensuite de supprimer la feuille avec le code suivant :

Sub Envoi_Email(what_adress As String, subject_line As String, mail_body As String, piece_jointe As String)
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)

olMail.To = what_adress
olMail.Subject = subject_line
olMail.Body = mail_body
olMail.Attachments.Add = piece_jointe
olMail.Send

End Sub

Sub CreateTCD()

'Création du tableau à envoyer

Sheets("Overview").Select
With ActiveWorkbook.SlicerCaches("Slicer_Market")
.SlicerItems("AUT").Selected = True
.SlicerItems("BNL").Selected = False
.SlicerItems("CEN").Selected = False
.SlicerItems("DEU").Selected = False
.SlicerItems("IBE").Selected = False
.SlicerItems("NOR").Selected = False
End With
ActiveSheet.PivotTables("PivotTable1").PivotSelect "", xlDataAndLabel, True
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("A1").Select
ActiveSheet.Paste
Selection.Columns.AutoFit
Selection.Rows.AutoFit
Range("D7").Select
ActiveSheet.Name = "The Overview"
End Sub

Sub Envoi_Email_Market()
'Variables
Dim full_name As String
Dim mail_body_message As String
Dim tableau_piece_jointe As String

Call CreateTCD

row_number = 1

Do
DoEvents
row_number = row_number + 1
mail_body_message = Sheets("emails").Range("J2")
full_name = Sheets("emails").Range("B" & row_number)

mail_body_message = Replace(mail_body_message, "replace_name_here", full_name)
tableau_piece_jointe = Sheets("The Overview").PivotTables(1)
MsgBox mail_body_message
Call Envoi_Email(Sheets("emails").Range("A" & row_number), "Launch Status", mail_body_message, tableau_piece_jointe)
Loop Until row_number = 6

Call DeleteTCD
End Sub

Sub DeleteTCD()
'suppresion de la feuille

Sheets("The Overview").Select
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete

Sheets("Overview").Select

MsgBox "The summary was sent", vbOKOnly, FIY
Range("E16").Select

'Boite de message
MsgBox "Your e-mail(s) have been successfully sent", vbOKOnly, "FIY"

End Sub


Malheureusement cela ne correspond pas au résultat que je souhaite obtenir... Je n'arrive pas à insérer le tableau en question..
Est-ce que quelqu'un pourait m'aider à résoudre mon problème ?
Afficher la suite 
Utile
+0
moins plus
Up :)
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,

site a voir:

http://www.rondebruin.nl/win/s1/outlook/bmail2.htm
agathe182 33Messages postés mercredi 24 août 2016Date d'inscription 23 septembre 2016 Dernière intervention - 22 sept. 2016 à 10:13
Voici le lien du document Cjoint http://www.cjoint.com/c/FIwikLAftZM

En fait j'aimerais envoyer le TCD dans la feuille Overview à chaque marché (AUT, BNL, ...) par rapport à la liste d'e-mails rentrés dans la feuille emails avec comme sélection de statut tout sauf forecast ok.

Je sais comment leur envoyer la feuille entière mais pas comment leur envoyer le tableau dans le corps du mail avec un texte...
Répondre
f894009 10220Messages postés dimanche 25 novembre 2007Date d'inscription 24 septembre 2016 Dernière intervention - 22 sept. 2016 à 11:23
Bonjour,
Je récupère votre fichier et regarde la chose
À+
Répondre
agathe182 33Messages postés mercredi 24 août 2016Date d'inscription 23 septembre 2016 Dernière intervention - 22 sept. 2016 à 11:59
Merci beaucoup !
Répondre
f894009 10220Messages postés dimanche 25 novembre 2007Date d'inscription 24 septembre 2016 Dernière intervention - 22 sept. 2016 à 13:56
Re,

Pas besoin de TCD pour cette affaire

fichier modifie pour Envoi @Mail par Market: http://www.cjoint.com/c/FIwmgiXck7f

Tout ce passe dans le module MEnvoi_By_Market
Répondre
agathe182 33Messages postés mercredi 24 août 2016Date d'inscription 23 septembre 2016 Dernière intervention - 22 sept. 2016 à 15:05
Je viens de le tester ça donne exactement le résultat que je souhaitais.
Merci énormément !
J'espère pouvoir un jour pouvoir utiliser le langage VBA de cette façon, parce que pour l'instant c'est un peu la galère ...
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !