Bonjour,
en vue de dessiner automatiquement dans Powerpoint depuis Excel
- des rapports
- des diagrammes de Gantt
- des schémas de processus
-...
j'ai créé un certain nombre de petites applis en VBA Excel qui déversent automatiquement des formes automatiques dans Powerpoint.
C'est facile avec le code :
etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public PresPPT,PRES Set PresPPT = CreateObject("PowerPoint.Application") PresPPT.Visible=True Set PRES = PresPPT.Presentations ' ... PRES.Application.ActiveWindow.Selection.SlideRange.Shapes._ AddShape(typedeforme, x, y, l, h).Select
La meilleure solution que j'aie trouvée à ce jour pour restituer aussi parfaitement que possible une forme est de créer une feuille de formes modèles et d'appliquer la mise en forme des modèles aux nouvelles formes créées.
Mais je n'ai pas encore mis la main sur le saint Graal, consistant à créer et mettre en forme des formes automatiques modèles dans Excel, et de les reproduire à l'identique dans Powerpoint. Notamment, une partie de la mise en forme du texte me lâche en route et les codes pour la couleur et l'alignement du texte sont totalement étrangères entre les deux applications.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 PRES.Application.ActivePresentation.Slides(1).Select .Selection.SlideRange.Shapes(far).Select typedeforme = .Selection.ShapeRange.AutoShapeType ' ... PRES.Application.ActivePresentation.Slides(2).Select .Selection.SlideRange.Shapes.AddShape(typedeforme, x, y, l, h).Select .Selection.ShapeRange.Apply
Je lance donc ma bouteille à la mer : comment copier toutes les propriétés d'une forme automatique d'Excel dans Powerpoint ? Faut-il passer par une passerelle plus musclée (liaisons de type OLE, COM ...?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 With PRES.Application.ActiveWindow.Selection 'Applique la mise en forme de l'objet .SlideRange.Shapes.AddShape(PrptBalise(RefBal, 6), xBal, yBal, lBal, hBal).Select .ShapeRange.Fill.ForeColor.RGB = couleur_remplissage .ShapeRange.Line.ForeColor.RGB = couleur_contour .ShapeRange.Line.Weight = epaisseur_contour .TextRange.Text = TexteForme .ShapeRange.TextFrame.TextRange.Font.Name = nom_police .ShapeRange.TextFrame.TextRange.Font.Bold = gras_police .ShapeRange.TextFrame.TextRange.Font.Size = taille_police ' à partir de là ça devient très moche .TextRange.Font.Color.RGB = couleur_police .HorizontalAlignment = align_horiz .VerticalAlignment = align_vertic End With
----------------------------------------------------------
Pour ceux qui s'intéresseraient à l'intérêt fonctionnel de ma [re]quête, mon but est par exemple de proposer aux utilisateurs d'un tableau de dates sous Excel, un fichier Excel qu'ils ouvrent simultanément et qui leur permet de déverser dans Powerpoint un beau diagramme de Gantt, et cela avec une ergonomie optimale
Merci à tous ceux qui étudieront on problème !!
Partager