VBA - Piloter Powerpoint avec Excel
fred43st
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
deepsoul94 -
deepsoul94 -
Bonjour à tous,
Je voudrais pouvoir piloter powerpoint avec Excel, donc la, le code VBA devrait créer une présentation PPT à partir d'excel mais quand je le lance, il me renvoie le message d'erreur suivant :
Erreur de compilation : Sub ou Fonction non définie
avec une erreur sur la 1ere ligne.
Ci dessous le code :
====================================================================
Sub NouvellePresentation()
Dim PptApp As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim Diapo As PowerPoint.Slide
Dim Sh As PowerPoint.Shape
Dim Cs1 As ColorScheme
Dim NbShpe As Integer
Set PptApp = CreateObject("Powerpoint.Application")
Set PptDoc = PptApp.Presentations.Add
With PptDoc
'--- Ajoute un Slide
.Slides.Add Index:=1, Layout:=ppLayoutBlank
'Crée une zone de texte (AddLabel)
Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=150, Height:=60)
'insère la valeur de la Cellule A1 dans une zone de texte
Sh.TextFrame.TextRange.Text = Range("A1")
'Modifie la couleur du texte
Sh.TextFrame.TextRange.Font.Color = RGB(255, 100, 255)
'--- Ajoute un nouveau slide et le positionner en 2eme position
Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)
'copie le 1er graphique contenu dans la feuille Excel active
ActiveSheet.ChartObjects(1).Copy
'collage dans la 2eme diapositive
Diapo.Shapes.Paste
'Compte le nombre de shapes dans la diapositive:
'le dernier objet inséré correspond à l'index le plus élevé
NbShpe = Diapo.Shapes.Count
'Renomme et met en forme l'objet collé
With Diapo.Shapes(NbShpe)
.Name = "monGraph" 'personnalise le nom
.Left = 150 'définit la position horizontale dans le slide
.Top = 100 'définit la position verticale dans le slide
.Height = 300 'hauteur
.Width = 400 'largeur
End With
'--- Modifie la couleur de fond dans les différents Slides
Set Cs1 = .ColorSchemes(3)
Cs1.Colors(ppBackground).RGB = RGB(225, 233, 200)
.SlideMaster.ColorScheme = Cs1
End With
'Sauvegarde la présentation
'dans le meme répertoire que le classeur excel contenant la macro.
PptDoc.SaveAs Filename:=ThisWorkbook.Path & "\" & "NouvellePresentation.ppt"
'ferme la presentation
PptDoc.Close
'ferme powerpoint
PptApp.Quit
MsgBox "Opération terminée."
End Sub
PptApp.Quit
MsgBox "Opération terminée."
End Sub
===================================================================
En vous remerciant d'avance :D
A bientot
Fred43st
Je voudrais pouvoir piloter powerpoint avec Excel, donc la, le code VBA devrait créer une présentation PPT à partir d'excel mais quand je le lance, il me renvoie le message d'erreur suivant :
Erreur de compilation : Sub ou Fonction non définie
avec une erreur sur la 1ere ligne.
Ci dessous le code :
====================================================================
Sub NouvellePresentation()
Dim PptApp As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim Diapo As PowerPoint.Slide
Dim Sh As PowerPoint.Shape
Dim Cs1 As ColorScheme
Dim NbShpe As Integer
Set PptApp = CreateObject("Powerpoint.Application")
Set PptDoc = PptApp.Presentations.Add
With PptDoc
'--- Ajoute un Slide
.Slides.Add Index:=1, Layout:=ppLayoutBlank
'Crée une zone de texte (AddLabel)
Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=150, Height:=60)
'insère la valeur de la Cellule A1 dans une zone de texte
Sh.TextFrame.TextRange.Text = Range("A1")
'Modifie la couleur du texte
Sh.TextFrame.TextRange.Font.Color = RGB(255, 100, 255)
'--- Ajoute un nouveau slide et le positionner en 2eme position
Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)
'copie le 1er graphique contenu dans la feuille Excel active
ActiveSheet.ChartObjects(1).Copy
'collage dans la 2eme diapositive
Diapo.Shapes.Paste
'Compte le nombre de shapes dans la diapositive:
'le dernier objet inséré correspond à l'index le plus élevé
NbShpe = Diapo.Shapes.Count
'Renomme et met en forme l'objet collé
With Diapo.Shapes(NbShpe)
.Name = "monGraph" 'personnalise le nom
.Left = 150 'définit la position horizontale dans le slide
.Top = 100 'définit la position verticale dans le slide
.Height = 300 'hauteur
.Width = 400 'largeur
End With
'--- Modifie la couleur de fond dans les différents Slides
Set Cs1 = .ColorSchemes(3)
Cs1.Colors(ppBackground).RGB = RGB(225, 233, 200)
.SlideMaster.ColorScheme = Cs1
End With
'Sauvegarde la présentation
'dans le meme répertoire que le classeur excel contenant la macro.
PptDoc.SaveAs Filename:=ThisWorkbook.Path & "\" & "NouvellePresentation.ppt"
'ferme la presentation
PptDoc.Close
'ferme powerpoint
PptApp.Quit
MsgBox "Opération terminée."
End Sub
PptApp.Quit
MsgBox "Opération terminée."
End Sub
===================================================================
En vous remerciant d'avance :D
A bientot
Fred43st
A voir également:
- Powerpoint vba
- Powerpoint viewer - Télécharger - Présentation
- Insérer video powerpoint - Guide
- Powerpoint 2013 - Télécharger - Présentation
- Powerpoint portrait - Guide
- Pagination powerpoint - Guide
3 réponses
Bonjour,
il vous faut différencier les objets de scripting de type [ Variant ] présent sous tous les VBAs
et les objets VBAs spécifiques à l'application.
La première instruction de votre routine appelle :
Dim PptApp As PowerPoint.Application
un objet non connu de Excel ???
2 solutions !
*** Première
Soit vous utilisé les objets de scripting et vous déclarer votre variable de type [ Variant ]
Dim PptApp As Variant
Set PptApp = CreateObject("Powerpoint.Application")
*** Seconde
Vous charger la référence Micorsoft PowerPoint xx Objects Library
voilà ça devrait rouler !
Lupin
il vous faut différencier les objets de scripting de type [ Variant ] présent sous tous les VBAs
et les objets VBAs spécifiques à l'application.
La première instruction de votre routine appelle :
Dim PptApp As PowerPoint.Application
un objet non connu de Excel ???
2 solutions !
*** Première
Soit vous utilisé les objets de scripting et vous déclarer votre variable de type [ Variant ]
Dim PptApp As Variant
Set PptApp = CreateObject("Powerpoint.Application")
*** Seconde
Vous charger la référence Micorsoft PowerPoint xx Objects Library
voilà ça devrait rouler !
Lupin
re :
normal, l'instruction juste avant place PP en avant plan !
Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)
'copie le 1er graphique contenu dans la feuille Excel active
ActiveSheet.ChartObjects(1).Copy
vous devez ramener Excel au premier plan par :
Windows("MonfichierExcel.xls").Activate
ActiveSheet.ChartObjects(1).Copy
Lupin
normal, l'instruction juste avant place PP en avant plan !
Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)
'copie le 1er graphique contenu dans la feuille Excel active
ActiveSheet.ChartObjects(1).Copy
vous devez ramener Excel au premier plan par :
Windows("MonfichierExcel.xls").Activate
ActiveSheet.ChartObjects(1).Copy
Lupin
Tout d'abord, je vous remercie pour vos solutions.
J'ai testé les 2 solutions, et il me renvoie une petite erreur.
"Erreur d'exécution '1004' : Impossible de lire la propriété ChartObjects de la classe Worksheet."
Il s'agit d'un erreur au niveau de la Ligne 31 (ActiveSheet.ChartObjects(1).Copy)
Je suis en train de voir si je peux corriger ce bug mais mes connaissances en VBA sont encore très limitées pour l'instant.
Merci beaucoup.
A bientot
Fred43st