Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copie graphique XL vers Powerpoint

6 réponses
Avatar
J
Bonjour à tous

J'ai récupéré un code de Jon Peltier copiant tous les graphiques d'une feuille
XL et les collant comme image dans .PPT tout en extrayant le titre de chaque
graphique pour le mettre en titre de la diapo.

Cela marche très bien pour 1 feuille.
***Seulement, je cherche à réaliser la même opération pour plusieurs feuilles
sélectionnées ensembles. Ma modif ne marche pas (ce qui ne me surprend guère
:-<) Comment faire, svp?

***De plus, le titre collé dans .PPT est en taille 44, comment avec la même
macro le réduire à 24, svp aussi?

Merci zatous(tes) et bon (jenesaisqueljourchezvous) à tous :-)

J@@
PS : voici le code et mes modestes modifs :

'********
'code de Jon Peltier
Sub ChartsAndTitlesToPresentation()
' Set a VBE reference to Microsoft PowerPoint Object Library

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer
Dim sTitle As String

Dim wks As Worksheet '<===******ajouté

' Reference existing instance of PowerPoint
Set PPApp = GetObject(, "Powerpoint.Application")
' Reference active presentation
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide

For Each wks In ActiveWorkbook.Windows(1).SelectedSheets '<===******ajouté

For iCht = 1 To ActiveSheet.ChartObjects.Count
With ActiveSheet.ChartObjects(iCht).Chart

' get chart title
If .HasTitle Then
sTitle = .ChartTitle.Text
Else
sTitle = ""
End If

' remove title (or it will be redundant)
.HasTitle = False

' copy chart as a picture
.CopyPicture _
Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture

' restore title
If Len(sTitle) > 0 Then
.HasTitle = True
.ChartTitle.Text = sTitle
End If
End With

' Add a new slide and paste in the chart
SlideCount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutTitleOnly)
PPApp.ActiveWindow.View.GotoSlide PPSlide.SlideIndex
With PPSlide
' paste and select the chart picture
.Shapes.Paste.Select
' align the chart
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
.Shapes.Placeholders(1).TextFrame.TextRange.Text = sTitle
End With

Next
Next '<===******ajouté
' Clean up
Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing

End Sub
'********

6 réponses

Avatar
Francois L
Bonjour,

Pas PPT sur le poste où je suis... mais je dirais qu'il faut un
wks.Activate après cette ligne

For Each wks In ActiveWorkbook.Windows(1).SelectedSheets '<===******ajouté


Il n'y a qu'une feuille active même s'il y en a plusieurs sélectionnées
et ensuite tu fais appel à ActiveSheet

--
François L
lundi matin ;-)

Avatar
Francois L


***De plus, le titre collé dans .PPT est en taille 44, comment avec la
même macro le réduire à 24, svp aussi?




Re,

Pour ça, c'est lié au modèle PPT. Le plus simple est de modifier le
masque de diapositive dans la présentation que tu utilises.

Ca doit bien pouvoir se faire en VBA... mais le VBA dans PPT, je ne
connais pas.

--
François L

Avatar
Francois L
Bon lundi François
et merci
je vais regarder dans ppt. Mais je maîtrise pas...
@+
J@@



Re,

Affichage, masque des diapositives

permet de modifier les caractéristiques par défaut dans la présentation
ou tu es...

--
François L

Avatar
J
Bon lundi François
et merci
je vais regarder dans ppt. Mais je maîtrise pas...
@+
J@@

Francois L wrote:


***De plus, le titre collé dans .PPT est en taille 44, comment avec la
même macro le réduire à 24, svp aussi?




Re,

Pour ça, c'est lié au modèle PPT. Le plus simple est de modifier le
masque de diapositive dans la présentation que tu utilises.

Ca doit bien pouvoir se faire en VBA... mais le VBA dans PPT, je ne
connais pas.




Avatar
J
Re bonjour François
voici l'adaptation
.Shapes.Placeholders(1).TextFrame.TextRange.Font.Size = 24 'met le
titre en taille 24 puis (dessous)centre
.Shapes.Placeholders(1).TextFrame.TextRange.Paragraphs(Start:=1,
Length:=1).ParagraphFormat.Alignment = ppAlignCenter

Encore Merci
@+
J@@


Francois L wrote:


***De plus, le titre collé dans .PPT est en taille 44, comment avec la
même macro le réduire à 24, svp aussi?




Re,

Pour ça, c'est lié au modèle PPT. Le plus simple est de modifier le
masque de diapositive dans la présentation que tu utilises.

Ca doit bien pouvoir se faire en VBA... mais le VBA dans PPT, je ne
connais pas.




Avatar
J
Re bonjour
j'ai ajouté activesheet.select
et à la fin
activesheet.next.select
sans rien modifier d'autre
tout à l'air OK
Merci
@+
J@@

Francois L wrote:
Bonjour,

Pas PPT sur le poste où je suis... mais je dirais qu'il faut un
wks.Activate après cette ligne

For Each wks In ActiveWorkbook.Windows(1).SelectedSheets
'<===******ajouté


Il n'y a qu'une feuille active même s'il y en a plusieurs sélectionnées
et ensuite tu fais appel à ActiveSheet