Macro Excel Powerpoint

Mathieu69

XLDnaute Nouveau
Bonjour,

Dans le cadre de mon stage, je dois effectuer une macro me permettant de sélectionner certains graphiques dans un onglet excel puis ensuite de les copier coller dans une présentation powerpoint a une certaine slide.
Je suis arrive a une macro presque correct a l'aide de ce forum (qui est vraiment très insctructif et bien fait)

Cependant, je rencontre quelques problèmes que je n'arrive pas a résoudre...
Tout d'abord j'aimerais supprimer les anciens graphiques sur mon powerpoint car il s'empile au fur et a mesure. J'ai trouvé une certaine formule sur le forum mais elle concerne la suppression sur un fichier excel et non powerpoint...
Deuxièmement, ma macro marche une fois sur deux. La faute ? VBA ne trouve plus le graphique en question alors que je ne change pas le nom sur excel...

Je dispose de petites bases en VBA mais rien d'excellent. En tout cas, je vous remercie d'avance...

Voici la macro en question :)

Sub Copie()
'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 'l'application sera visible
Set PptDoc = PPT.Presentations.Open("C:\Users\barnavon\Pictures\Test Macro Graph\Graphs for presentations2.ppt") 'ouverture fichier ppt


'copie du graphique nommé,contenu dans la feuille active

Sheets(1).ChartObjects("Chart 1025").Copy

PptDoc.Slides(7).Shapes.Paste 'collage dans le Slide7 du document Power Point

Sheets(1).ChartObjects("Chart 1027").Copy
PptDoc.Slides(8).Shapes.Paste 'collage dans le Slide8 du document Power Point

Sheets(2).ChartObjects("Performance").Copy
PptDoc.Slides(3).Shapes.Paste 'collage dans le Slide3 du document Power Point

Sheets(2).ChartObjects("Chart 13").Copy
PptDoc.Slides(4).Shapes.Paste 'collage dans le Slide4 du document Power Point

Sheets(2).ChartObjects("Intervalle").Copy
PptDoc.Slides(5).Shapes.Paste 'collage dans le Slide5 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(7).Shapes.Count

With PptDoc.Slides(7).Shapes(NbShpe)
.Name = "monGraph" 'personnaliser le nom de l'image insérée
.Left = 70 'position horizontale dans le slide
.Top = 70 'position verticale dans le slide
.Height = 5 'hauteur image
.Width = 5 'largeur image

End With


'compte le nombre de shapes dans le 3eme slide
'le dernier objet inséré correspond à l'index le plus élevé
NbShpe = PptDoc.Slides(8).Shapes.Count


With PptDoc.Slides(8).Shapes(NbShpe)

.Name = "monGraph" 'personnaliser le nom de l'image insérée
.Left = 60 'position horizontale dans le slide
.Top = 85 'position verticale dans le slide
.Height = 400 'hauteur image
.Width = 600 'largeur image

End With


'compte le nombre de shapes dans le 3eme slide
'le dernier objet inséré correspond à l'index le plus élevé
NbShpe = PptDoc.Slides(3).Shapes.Count

With PptDoc.Slides(3).Shapes(NbShpe)
.Name = "monGraph" 'personnaliser le nom de l'image insérée
.Left = 60 'position horizontale dans le slide
.Top = 85 'position verticale dans le slide
.Height = 400 'hauteur image
.Width = 600 'largeur image

End With


'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 = "monGraph" 'personnaliser le nom de l'image insérée
.Left = 60 'position horizontale dans le slide
.Top = 85 'position verticale dans le slide
.Height = 400 'hauteur image
.Width = 600 'largeur image

End With



'compte le nombre de shapes dans le 3eme slide
'le dernier objet inséré correspond à l'index le plus élevé
NbShpe = PptDoc.Slides(5).Shapes.Count

With PptDoc.Slides(5).Shapes(NbShpe)
.Name = "monGraph" 'personnaliser le' nom de l'image insérée
.Left = 60 'position horizontale dans le slide
.Top = 135 'position verticale dans le slide
.Height = 200 'hauteur image
.Width = 600 'largeur image

End With

PptDoc.Save '
PptDoc.Close '
PPT.Quit '
End Sub
 

chris

XLDnaute Barbatruc
Re : Macro Excel Powerpoint

Bonjour

Si je comprends ton explication : tu as une présentation Powerpoint dans laquelle figure déjà des graphiques issus d'Excel et tu veux les remplacer par une version plus récente des mêmes graphiques.

Le VBA est effectivement une solution mais pas la plus simple quand il faut toucher à Powerpoint.

Elle consiste à copier les graphiques et effectuer un collage spécial avec liaison dans Powerpoint.
Ainsi si le graph source change on peut obtenir directement la mise à jour.

Sinon pour ton code il faudrait un extrait des fichiers Excel et PowerPoint pour t'aider.
 

Mathieu69

XLDnaute Nouveau
Re : Macro Excel Powerpoint

Bonjour Chris,

Tout d'abord, merci de ta réponse.
Non, les graphiques ne sont pas présent sur la présentation PowerPoint. En faite j'ai créé des présentations PowerPoint type dans lesquels, chaque début de mois j’aimerais effectuer ma macro. Mon soucis, comme je t'ai dit, c'est qu'une fois la macro effectué, les graphiques sont alors présent dans la présentation mais je n'arrive pas a inclure dans ma macro, la possibilité de supprimer les anciens graphiques de ma macro par les nouveaux. De plus, la macro ne repère pas forcement a chaque fois les graphiques demandés. Je t'envois ca demain car je ne suis pas au travail :)

Merci encore
 

chris

XLDnaute Barbatruc
Re : Macro Excel Powerpoint

Bonjour

Si le projet est à son début, alors pourquoi ne pas opter pour la solution qui consiste à copier les graphiques et effectuer un collage spécial avec liaison dans Powerpoint.
Ainsi si le graph source change on peut obtenir directement la mise à jour.

D'autant que le collage standard, que tu utilises dans ton VBA, crée des liaisons en mise à jour manuelle moins gérables...
 

Mathieu69

XLDnaute Nouveau
Re : Macro Excel Powerpoint

Bonjour,

Merci de ta réponse. Le soucis c'est que le fichier excel est une énorme macro qui permet de télécharger des données excel sur Internet ou Bloomberg. Du coup, le premier onglet permet de choisir des fonds, puis par la suite, une fois la macro activé ca télécharge les données et crée des graphiques en conséquence sur différents onglets...
 

Discussions similaires

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035