PowerPoint

Fermé
Coco - 8 sept. 2015 à 13:48
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 8 sept. 2015 à 15:54
Bonjour,


alors voilà, je dois réaliser un powerPoint! Tout allait bien , tout fonctionné bien et du jour au lendemain, j'ai cette erreur : ShapeRange.Select: Invalid request. To select a shape, its view must be active.
Je ne comprend pas, pcq ma macro je ne l'ai pas touchée et avant ça s'executait très bien et ça copier très bien mes tableaux et mes graphiques. Et là d'un seul coup j'ai cette erreur. Voici un bout de mon code (je ne vais pas vous mettre les diapo, seulement la première car les autres fonctionnent pareil)
Je supprime dèjà toutes les diapos à partir de la 3 et ensuite, je fais un copier d'une plage de données ou tableau et je le colle dans les diapos.

Sub PowerPoint

' Necessite d'activer la reference Microsoft Powerpoint Object Library
' Variables
Dim PPT As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim NbShpe As Byte
Set PPT = CreateObject("Powerpoint.Application") 'creation session PowerPoint
PPT.Visible = True 'l'application sera visible
Set PptDoc = PPT.Presentations.Open(ThisWorkbook.Path & "/PrésentationReportingFinancier.pptx") 'ouverture fichier ppt
n = PptDoc.Slides.Count

' Supprime toutes les diapos sauf les 2 premières
While n <> 2
PptDoc.Slides(3).Delete
n = PptDoc.Slides.Count
Wend

With PptDoc

' Créer diapo 3
Set Diapo = .Slides.Add(Index:=3, Layout:=ppLayoutBlank)
Sheets("Paramètres").Activate
Set maPlage = Range(Cells(13, 2), Cells(17, 4))
maPlage.Select
Selection.Copy
Diapo.Select
Diapo.Shapes.PasteSpecial(ppPasteDefault, link:=True).Select
NbShpe = PptDoc.Slides(3).Shapes.Count
With PptDoc.Slides(3).Shapes(NbShpe)
.Left = 100 'position horizontale dans le slide
.Top = 150 'position verticale dans le slide
.Height = 150 'hauteur image
.Width = 280 'largeur image
End With
Set shpe = Diapo.Shapes. _
AddTextbox(msoTextOrientationHorizontal, _
150, 20, 500, 50) 'Taille
' Titre
With shpe.TextFrame.TextRange
.Text = "INFORMATION MARCHE"
.Font.Name = "arial"
.Font.Size = 36
.Font.Color.RGB = RGB(0, 91, 187) ' Couleur
End With

End With
End Sub

l'erreur d'execution se fait à la ligne : Diapo.Shapes.PasteSpecial(ppPasteDefault, link:=True).Select

Merci d'avance pour votre aide
A voir également:

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
8 sept. 2015 à 14:49
Bonjour,

Remplace:

Diapo.Select 
Diapo.Shapes.PasteSpecial(ppPasteDefault, link:=True).Select 


par:

Diapo.Shapes.Paste



0
Bonjour,

je viens d'essayer et ça ne marche pas, toujours le même message d'erreur.... Je ne comprends vraiment pas...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
8 sept. 2015 à 15:15
J'ai fait un essai avec une nouvelle présentation, cela fonctionne. Je pense que cela se situe au niveau du slide 3

Option Explicit
Sub essai()
' Necessite d'activer la reference Microsoft Powerpoint Object Library
' Variables
Dim PPT As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim NbShpe As Byte
Dim n, Diapo, maPlage, shpe
Set PPT = CreateObject("Powerpoint.Application") 'creation session PowerPoint
PPT.Visible = True 'l'application sera visible
Set PptDoc = PPT.Presentations.Add

n = PptDoc.Slides.Count

' Supprime toutes les diapos sauf les 2 premières
'While n <> 2
'PptDoc.Slides(3).Delete
'n = PptDoc.Slides.Count
'Wend

With PptDoc

' Créer diapo 3
Set Diapo = .Slides.Add(Index:=1, Layout:=ppLayoutBlank)
Sheets("Feuil1").Activate
Set maPlage = Range(Cells(13, 2), Cells(17, 4))
maPlage.Select
Selection.Copy
Diapo.Select
Diapo.Shapes.PasteSpecial(ppPasteDefault, link:=True).Select

NbShpe = Diapo.Shapes.Count

'Renomme et met en forme l'objet collé
With Diapo.Shapes(NbShpe)
 .Left = 100 'position horizontale dans le slide
 .Top = 150 'position verticale dans le slide
 .Height = 150 'hauteur image
 .Width = 280 'largeur image
End With
Set shpe = Diapo.Shapes. _
AddTextbox(msoTextOrientationHorizontal, _
150, 20, 500, 50) 'Taille
' Titre
With shpe.TextFrame.TextRange
 .Text = "INFORMATION MARCHE"
 .Font.Name = "arial"
 .Font.Size = 36
 .Font.Color.RGB = RGB(0, 91, 187) ' Couleur
End With

End With
End Sub


0
Ca ne marche pas.... Je comprends pas pcq j'ai vrmt rien changé et avant ça marché. ça plante toujours à la même ligne Diapo.Shapes.PasteSpecial(ppPasteDefault, link:=True).Select
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
8 sept. 2015 à 15:54
Je me suis mis dans les mêmes conditions.
Voir l'exemple:

http://www.cjoint.com/c/EIin060jVdQ
0