VBA : Automatiser le passage de données d’Excel vers PowerPoint




Comment peut-on prendre des données sur une feuille de calcul Excel (tableau ou graphique) et automatiser leur exportation dans un présentation Powerpoint ? Cela est possible en combinant astucieusement VBA PowerPoint et VBA Excel.

 - 1 – Sur une nouvelle feuille de calcul, créez un tableau de données, (ici A1:D10) puis à partir de ce tableau créez le graphique de votre choix.

- 2 – Accédez ensuite à votre éditeur Visual Basic ALT + F11 ou Développeur / Visual Basic. Pour pouvoir manipuler les objets ou les collections d’objets de PowerPoint, nous devons nous assurer que la bibliothèque qui les contient est active dans votre éditeur Visual Basic. Passez la commande F2 ou Affichage / Explorateur d’objets et vérifier sa présence dans la liste des bibliothèques d’objets.
 - 3 – Si la bibliothèque PowerPoint est absente de la liste, passez la commande Outils / Références… et cochez la référence Microsoft PowerPoint 14.0  Object Library (Ici version 2010) pour activer la bibliothèque des objets Powerpoint. Puis validez en cliquant sur Ok.


 - 4 – Voici un premier exemple de code dans lequel nous démarrons l'application PowerPoint et dans laquelle nous ouvrons une nouvelle présentation pour le collage simple du graphique Excel

Sub Export_Powerpoint()

Dim appPpt As Object 'la variable qui contiendra l'application
Dim Pptpre As Object
'la variable qui contiendra la présentation

Dim nbshpe As Byte
Dim shpe As Object 'pour manipuler un objet Forme
Dim sld As Object 'pour manipuler un objet
diapositive

'-----------------------------------------------

 
Set appPpt = CreateObject("Powerpoint.Application")
appPpt.Visible = True


'l'application est créée et rendu visible
'--------------------------------------------------------

 
Set Pptpre = appPpt.Presentations.Add
Set sld = Pptpre.Slides.Add _
(Index:=1, Layout:=ppLayoutBlank)
Set sld = Pptpre.Slides.Add _
(Index:=2, Layout:=ppLayoutBlank)


'la présentation est créée et on ajoute 2 diapositives vierges à l'intérieur
'---------------------------------------------------

 
ActiveSheet.ChartObjects(1).Select
ActiveChart.ChartArea.Copy
Pptpre.Slides(2).Shapes.Paste
nbshpe = Pptpre.Slides(2).Shapes.Count
With Pptpre.Slides(2).Shapes(nbshpe)
    .Left = 0
    .Top = 100
    .Width = 400
    .Height = 300
 End With


'on procède au copier / coller et on récupéré le numéro de la dernière forme 
'de la deuxième diapositive (elle contient le graphique), après on lui donne
'des paramètres de taille et de positionnement
'--------------------------------------------------------------------

 
Set shpe = Pptpre.Slides(1).Shapes. _
AddTextbox(msoTextOrientationHorizontal, _
250, 20, 500, 50)
With shpe.TextFrame.TextRange
    .Text = "Passage d'un graphique Excel dans PowerPoint"
    .Font.Name = "arial"
    .Font.Size = 24
    .Font.Bold = True
End With


'Ajout d'une zone de texte sur la diapositive 1 puis on attribue
'un texte dans cette zone avec paramètre de mise en forme
'--------------------------------------------------------------------
 


Pptpre.SaveAs ("c:\users\olivier-picot.fr\Documents\monfichierV2.pptx")
Set appPpt = Nothing


'sauvegarde de la présentation puis remise à 0 de la variable
'--------------------------------------------------------------------
 


End Sub

- 5 – Après exécution du code vous devriez avoir le document suivant dans PowerPoint.

 

La suite très prochainement...


3 commentaires:

Anonyme a dit…

SUPER comme tutoriel. J'ai enfin compris comment utiliser des données qui proviennent d'excel vers powerpoint.
MERCI

YETI7984 a dit…

bonjour

je voudrais faire la même manip avec avec un tableau tout simplement a la place du graphique

que dois je modifier dans ce code ?

merci

Anonyme a dit…

Voila qui m'ouvre de nouvelles possibiltés.
Super, lisible et compréhensible pour le néophite que je suis (même à 57 ans!)
Je rajoute dans mes favori
jym42009

Enregistrer un commentaire

top