Posez votre question Signaler

VBA - Piloter Powerpoint avec Excel

fred43st 7Messages postés 5 juillet 2007Date d'inscription - Dernière réponse le 25 juil. 2007 à 16:17
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
Lire la suite 

VBA - Piloter Powerpoint avec Excel »

3 réponses
Réponse
+3
moins plus
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
fred43st - 25 juil. 2007 à 09:36
Bonjour 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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « VBA - Piloter Powerpoint avec Excel » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?