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
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