Piloter PPt depuis Excel et enregistreur de macro ppt

needz

XLDnaute Nouveau
Bonjour à tous,

Ma question est d'ordre méthodologique, je n'ai pas de besoin spécifique d'application même si tout exemple est le bienvenu.

J'aimerais savoir s'il est possible d'utiliser l'enregistreur de macro ppt (présent sur msoffice 2000) afin de modifier une présentation puis ensuite "traduire" le code pour l'intégrer à une macro Excel.

A noter qu'en gros j'aimerais juste trouver un moyen facile de piloter PPT depuis Excel, notamment en ce qui concerne le positionnement des fichiers collés (sans liaison) et la mise en forme de certaines slides.

Donc comment adapte-t-on le code ppt pour en faire un code vba Excel pilote ? Quelles sont les règles ?

Malgré mes recherches je n'ai pas pu (ou su) trouver.
Merci d'avance !

Guillaume
 

tototiti2008

XLDnaute Barbatruc
Re : Piloter PPt depuis Excel et enregistreur de macro ppt

Bonjour needz,

J'aimerais savoir s'il est possible d'utiliser l'enregistreur de macro ppt (présent sur msoffice 2000) afin de modifier une présentation puis ensuite "traduire" le code pour l'intégrer à une macro Excel.

A priori, oui

Le principe est : tu copies le code généré par l'enregistreur dans Powerpoint et tu le mets dans Excel

Par exemple :

Code:
    ActiveWindow.Selection.SlideRange.Shapes("Rectangle 2").Select
    ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Select
    ActiveWindow.Selection.TextRange.Font.Color.SchemeColor = ppFill
    With ActiveWindow.Selection.ShapeRange
        .Fill.ForeColor.SchemeColor = ppAccent2
        .Fill.Visible = msoTrue
        .Fill.Solid
    End With
    ActiveWindow.View.GotoSlide Index:=ActivePresentation.Slides.Add(Index:=2, Layout:=ppLayoutText).SlideIndex
    ActiveWindow.Selection.SlideRange.Shapes("Rectangle 2").Select
    With ActiveWindow.Selection.ShapeRange
        .Fill.ForeColor.SchemeColor = ppAccent3
        .Fill.Visible = msoTrue
        .Fill.Solid
    End With
    ActiveWindow.Selection.TextRange.Font.Color.SchemeColor = ppAccent1

ensuite, tu ajoutes en début de code :

Code:
Set PPT = CreateObject("Powerpoint.Application")
With PPT

et en fin de code

Code:
End With

Chaque ligne des commandes Powerpoint doit commencer par un Point :

Code:
Set PPT = CreateObject("Powerpoint.Application")
With PPT
    .ActiveWindow.Selection.SlideRange.Shapes("Rectangle 2").Select
    .ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Select
    .ActiveWindow.Selection.TextRange.Font.Color.SchemeColor = ppFill
    With .ActiveWindow.Selection.ShapeRange
        .Fill.ForeColor.SchemeColor = ppAccent2
        .Fill.Visible = msoTrue
        .Fill.Solid
    End With
    .ActiveWindow.View.GotoSlide Index:=ActivePresentation.Slides.Add(Index:=2, Layout:=ppLayoutText).SlideIndex
    .ActiveWindow.Selection.SlideRange.Shapes("Rectangle 2").Select
    With .ActiveWindow.Selection.ShapeRange
        .Fill.ForeColor.SchemeColor = ppAccent3
        .Fill.Visible = msoTrue
        .Fill.Solid
    End With
    .ActiveWindow.Selection.TextRange.Font.Color.SchemeColor = ppAccent1
End With

après, il reste à remplacer toutes les constantes Powerpoint par leurs valeurs (ppFill vaut 5 par exemple)

Evidement, pour que le code fonctionne, il faudra que ta présentation Powerpoint soit chargée dans ton objet PPT, il y aura surement un code d'ouverture de la présentation à mettre au début
 

needz

XLDnaute Nouveau
Re : Piloter PPt depuis Excel et enregistreur de macro ppt

Merci pour la qualité et la rapidité de ta réponse Tototiti.

En effet j'ai bien des codes d'ouverture en début et l'activation de la library correspondante. Par contre peux-tu m'éclaircir sur ce point :
après, il reste à remplacer toutes les constantes Powerpoint par leurs valeurs (ppFill vaut 5 par exemple)

Il faudrait donc dans ton exemple de code que je remplace
Code:
 With .ActiveWindow.Selection.ShapeRange
        .Fill.ForeColor.SchemeColor = ppAccent3
par
Code:
 With .ActiveWindow.Selection.ShapeRange
        .5.ForeColor.SchemeColor = ppAccent3
?
Je suis sûre que j'ai mal compris ce point ^^. Désolé je débute juste en vba et j'essaie de progresser comme je peux.

Cordialement.
 

tototiti2008

XLDnaute Barbatruc
Re : Piloter PPt depuis Excel et enregistreur de macro ppt

Re,

En effet, ce n'est pas ça ;)

Dans le code Powerpoint, tu as des constantes spécifiques à Powerpoint qui ne seront pas comprises par Excel
En général elles commencent par "pp"

ppFill
ppAccent1
ppAccent2
ppAccent3

et peut-être même

msoTrue

Dans Powerpoint, Visual basic Editor, va dans l'explorateur d'objets (touche F2) et tapes le nom de la constante

Dans la liste des constantes trouvées, clique sur le nom, la valeur apparaît en bas de la fenêtre
 

sigismond

XLDnaute Occasionnel
Re : Piloter PPt depuis Excel et enregistreur de macro ppt

Bonjour à tous, Needz, Tototiti.


Les applications Office utilisent la programmation objet. C'est un mode de construction qui permet d'organiser l'ensemble des propriétés et comportements dont le résultat est ton document Word, ton tableur Excel ou ta présentation PowerPoint.
Toute cette architecture pourra être modifiée de deux façons :
  • par l'interface graphique (c'est le mode naturel)
  • par du code VBA
en théorie, par VBA, nulle besoin d'être dans l'environnement cible, tu peux modifier une présentation PowerPoint depuis PPoint, Word ou Excel.

Mais dans tous les cas il te faudra connaitre le système d'objet de ta cible (dans ton cas PPoint) pour pouvoir interagir avec les propriétés de ta présentation.

Certes l'enregistreur de macro est une astuce qui te mets le pied à l'étrier mais très vite il faudra te colleter avec la logique objet.

regarde le tuto signalé par ma signature il concerne Word mais le système est identique avec PPoint.

Bon courage,

Sigismond
 

Discussions similaires

Statistiques des forums

Discussions
312 671
Messages
2 090 761
Membres
104 656
dernier inscrit
DAM2B42