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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
Sub CopyAllChartsToOutlookEmail()
Dim objOutlookApp As Outlook.Application
Dim objMail As Outlook.MailItem
Dim objMailDocument As Word.Document
Dim objSheet As Excel.Worksheet
Dim objChart As Excel.ChartObject
Dim objChartTableau(10) As Excel.ChartObject
Dim i, j As Integer
Dim Desti, CC, Sujet, Semaine, NumSemTxt As String
Dim NumSem As Byte, Année As Integer
'Suite à un bug sur l'affichage des graphes j'ai rajouté ces lignes de selection des celllues où se trouve mes graphiques
'En effet sans cette astuce, je n'ai que le PREMIER graph qui est copié 10 fois...
' ou je dois scroller avec la souris jusqu'à la fin de mes graphiques
For i = 10 To 320 Step 30
Range("A" & i).Select
Next i
Range("A12").Select
'Get Outlook Application
On Error Resume Next
Set objOutlookApp = GetObject(, "Outlook.Application")
If objOutlookApp Is Nothing Then
Set objOutlookApp = CreateObject("Outlook.Application")
End If
NumSem = NOSEM(Date - 7) 'ici je vais reprendre les données de ma semaine précédente (Graphiques basés sur S-1)
Année = Year(Date - 7)
If NumSem < 10 Then
NumSemTxt = "0" & Trim(Str(NumSem))
Else
NumSemTxt = Trim(Str(NumSem))
End If
Sujet = "Données à jour de la semaine : S" & NumSemTxt & " - " & Année & " / Texte à ecrire"
'Récup des destinataires du mail et des copies correspondants
Desti = Sheets("RécapGraphPourSlides").Range("B1").Value
CC = Sheets("RécapGraphPourSlides").Range("B2").Value
'Create an Outlook Email
Set objMail = objOutlookApp.CreateItem(olMailItem)
With objMail
.Display
.Subject = Sujet
.Recipients.Add Desti
.CC = CC
.Display
End With
Set objMailDocument = objMail.GetInspector.WordEditor
i = 1
For Each objSheet In ActiveWorkbook.Worksheets
If objSheet.Name = "RécapGraphPourSlides" Then 'RécapGraphPourSlides=Nom de ma feuille
For Each objChart In objSheet.ChartObjects
Set objChartTableau(i) = objChart
i = i + 1
Next
Exit For 'permet de sortir de la boucle du haut qui recherche tous les onglets du document. Pas des plus élégants...
End If
Next
For i = 10 To 1 Step -1
'Debug.Print i & " " & objChartTableau(i).Name
objMailDocument.Range(0, 0) = Chr(10) & Chr(13)
objChartTableau(i).Copy
objMailDocument.Range(0, 0).Paste
objMailDocument.InlineShapes(1).Width = 1400 * 0.75
objMailDocument.InlineShapes(1).Height = 560 * 0.75
If i = 10 Then objMailDocument.Range(0, 0) = vbCrLf & "Commentaires affichés avant le graphique 10*:" & vbCrLf
If i = 6 Then objMailDocument.Range(0, 0) = vbCrLf & "Commentaires affichés avant le graphique 6 :" & vbCrLf
If i = 5 Then objMailDocument.Range(0, 0) = vbCrLf & "Commentaires affichés avant le graphique 5" & vbCrLf
Next i
objMailDocument.Range(0, 0) = vbCrLf & "Bonjour," & vbCrLf & "Pour votre information, voici une synthèse des indicateurs à jour pour S" & NumSemTxt & vbCrLf & "Répartition des ....." & vbCrLf
End Sub |
Partager