Bonjour,
J'ai un fichier excel comportant un bon nombre de graphiques et tableaux. Ces graphiques sont générés par des macros et doivent etre ensuite copier/coller sur une presentation powerpoint.
J'ai pensé à effectuer des copier/coller avec liaisons sur mon powerpoint mais l'image rendue est de qualité médiocre... C'est donc pourquoi j'ai décidé d'effectuer une macro basique (étant donné mon faible niveau en VBA). Mon soucis est qu'une fois les copier/coller effectués, je vais manipuler cette macro tous les mois sur la meme presentation et les graphiques vont donc s'empiler les uns sur les autres ce qui va rendre le fichier assez lourd. J'ai trouvé sur un forum la fonction adéquate pour supprimer un graphique sur Powerpoint mais elle ne trouve pas forcément le graphique en question. Voila la macro en question :
Mon soucis se trouve donc au niveau de la suppression des graphiques. Je ne sais pas s'il existe une solution plus simple c'est donc pourquoi je sollicite votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub PwP() 'necessite d'activer la reference Microsoft Powerpoint Object Library Dim PPT As Powerpoint.Application Dim PptDoc As Powerpoint.Presentation Dim NbShpe As Byte Set PPT = CreateObject("Powerpoint.Application") 'creation session PowerPoint PPT.Visible = True Set PptDoc = PPT.Presentations.Open("...") 'ouverture fichier ppt NbShpe = PptDoc.Slides(4).Shapes.Count PptDoc.Slides(4).Shapes("Graphique 1").Delete Sheets("Sheet1").Select ActiveSheet.ChartObjects("Graphique 1").Activate ActiveChart.ChartArea.Select ActiveChart.ChartArea.Copy PptDoc.Slides(4).Shapes.Paste 'collage dans le Slide3 du document Power Point 'compte le nombre de shapes dans le 3eme slide 'le dernier objet inséré correspond à l'index le plus élevé NbShpe = PptDoc.Slides(4).Shapes.Count With PptDoc.Slides(4).Shapes(NbShpe) .Name = "Graphique 4" 'personnaliser le nom de l'image insérée .Left = 150 'position horizontale dans le slide .Top = 100 'position verticale dans le slide .Height = 300 'hauteur image .Width = 400 'largeur image End With End Sub
Merci d'avance
Partager