VBA envoi TCD dans le corps d'un email

Résolu/Fermé
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016 - Modifié par agathe182 le 15/09/2016 à 11:55
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016 - 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 ?

2 réponses

agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
15 sept. 2016 à 17:16
Up :)
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
15 sept. 2016 à 19:18
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
20 sept. 2016 à 09:05
Bonjour je suis bien allée voir ce site, en toute honneteté je suis allée en voir plein.
Mais je ne parviens pas à utiliser sa macro...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
20 sept. 2016 à 10:13
Bonjour,

Oui, votre soucis est de selectionner votre TCD pour la fonction
Function RangetoHTML(Rng As Range)


je souhaiterai envoyer à chaque marché le tableau croisé dynamique
Vous voulez faire les choix en automatique et envoyer un @Mail a chaque "marche", mais vous n'avez dans votre code qu'une seule adresse destinataire

Serait-il possible d'aoir votre fichier sans donnees sensibles ???
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
20 sept. 2016 à 16:01
En fait j'ai fait un test avec ce code et ensuite je souhaitais créer une boucle pour chaque marché...
Je vais vous envoyer ça, merci !
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
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...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
22 sept. 2016 à 11:23
Bonjour,
Je récupère votre fichier et regarde la chose
À+
0