Piloter PowerPoint depuis un autre programme

ATTENTION : Programmeurs confirmés seulement !

Dans l'exemple de cette page, nous allons prendre le contrôle de PowerPoint depuis Excel à l'aide de VBA. Pour réaliser, tester et réussir ce programme, j'ai utilisé Windows XP en français, avec Office XP en Français (ce qui ne veut pas dire qu'il ne tourne pas sous d'autres configurations).

Il va s'agir de copier un graphique depuis une feuille Excel dans une présentation PowerPoint.

Pour faire fonctionner ce programme, il va falloiir que vous créez la configuration suivante sur votre machine :

  1. Créer un fichier Excel
  2. Dans ce fichier Excel, reproduisez le tableau suivant :
    Fruit Poids
    Banane 34
    Peche 54
    Abricot 65
  3. Créez un graphique tout simple dans la même feuille (La présentation n'a pas d'importance)
  4. Enregistrez votre fichier sous C:\Mes Documents\MonClasseur.xls
  5. Créez un diaporama Powerpoint composé d'une seule Diapositive vide
  6. Enregistrez le sous C:\Mes Documents\MaPresentation.ppt
  7. Quittez PowerPoint
  8. Revenez dans Excel
  9. Allez dans VBA (Raccourci Clavier : Alt F11)
  10. Menu Outils/Références : Cochez "Microsoft PowerPoint 10.0 Object Library" (10 = XP. Si vous travaillez avec 2000, c'est 9)
  11. Créez un nouveau Module

Dans le module, copiez la macro suivante :

Sub TestPowerPoint()
  ' On déclare une variable de type Application PowerPoint
  Dim ppt As PowerPoint.Application
  Set ppt = CreateObject("PowerPoint.Application")
  ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de fichier (Erreur)
  ' On crée maintenant un objet Presentation
  Dim Pres As PowerPoint.Presentation
  ' Et on lui dit de quelle présentation il s'agit :
  Set Pres = ppt.Presentations.Open(Filename:="C:\Mes Documents\MaPresentation.ppt")
  ' On active, sélectionne et copie le Graphique Graphique 1 de Excel :
  ActiveSheet.ChartObjects("Graphique 1").Activate
  ActiveChart.ChartArea.Select
  ActiveChart.ChartArea.Copy
  ' Et on le colle dans la première diapositive de la présentation :
  Pres.Slides(1).Shapes.Paste
  ' On enregistre la présentation PowerPoint :
  Pres.Save
  ' Et on quitte PowerPoint proprement :
  ppt.Quit
  Set ppt = Nothing
End Sub

Cette macro va :

Une fois que vous avez lancé la macro, pour voir si elle a fonctionné, il vous suffit d'ouvrir ensuite manuellement PowerPoint et MaPresentation.ppt