Je suis en train de réaliser un script qui va balancer des images d'Excel
dans PowerPoint... mon problème est que si ça fonctionne bien pour la
première diapo, ça plante à la 2e. J'ai un message "Erreur d'exécution
'1004': La méthode 'Range' de l'objet '_Global' a échoué" sur un simple
select d'une plage de donnée... :-/
Sub Xls_a_Ppt()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim AWkb As String
AWkb = ActiveWorkbook.Name
ModelePowerPoint 'ouvre une instance PPT avec mon modèle
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide
For Each sh In Workbooks(AWkb).Worksheets
Windows(AWkb).Activate
sh.Select
Range(ActiveSheet.PageSetup.PrintArea).Select 'Mon plantage
s'effectue ici au 2e passage sur une feuille où j'ai bien une zone
d'impression...
Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set PPSlide =
PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
PPSlide.Shapes.Paste.Select
Set PPSlide = Nothing
Set Diapo =
PPPres.Slides.Add(Index:=PPApp.ActiveWindow.Selection.SlideRange.SlideIndex
+ 1, Layout:=ppLayoutBlank)
Next sh
Set PPPres = Nothing
Set PPApp = Nothing
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
bonjour HD,
essaie avec Application.GoTo Range(...
isabelle
Le 2011-01-24 10:45, HD a écrit :
Bonjour,
Je suis en train de réaliser un script qui va balancer des images d'Excel dans PowerPoint... mon problème est que si ça fonctionne bien pour la première diapo, ça plante à la 2e. J'ai un message "Erreur d'exécution '1004': La méthode 'Range' de l'objet '_Global' a échoué" sur un simple select d'une plage de donnée... :-/
Sub Xls_a_Ppt() Dim PPApp As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim AWkb As String
AWkb = ActiveWorkbook.Name ModelePowerPoint 'ouvre une instance PPT avec mon modèle Set PPApp = GetObject(, "Powerpoint.Application") Set PPPres = PPApp.ActivePresentation PPApp.ActiveWindow.ViewType = ppViewSlide
For Each sh In Workbooks(AWkb).Worksheets Windows(AWkb).Activate sh.Select Range(ActiveSheet.PageSetup.PrintArea).Select 'Mon plantage s'effectue ici au 2e passage sur une feuille où j'ai bien une zone d'impression... Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture Set PPSlide > PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex) PPSlide.Shapes.Paste.Select Set PPSlide = Nothing Set Diapo > PPPres.Slides.Add(Index:=PPApp.ActiveWindow.Selection.SlideRange.SlideIndex + 1, Layout:=ppLayoutBlank) Next sh Set PPPres = Nothing Set PPApp = Nothing End Sub
bonjour HD,
essaie avec Application.GoTo Range(...
isabelle
Le 2011-01-24 10:45, HD a écrit :
Bonjour,
Je suis en train de réaliser un script qui va balancer des images d'Excel
dans PowerPoint... mon problème est que si ça fonctionne bien pour la
première diapo, ça plante à la 2e. J'ai un message "Erreur d'exécution
'1004': La méthode 'Range' de l'objet '_Global' a échoué" sur un simple
select d'une plage de donnée... :-/
Sub Xls_a_Ppt()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim AWkb As String
AWkb = ActiveWorkbook.Name
ModelePowerPoint 'ouvre une instance PPT avec mon modèle
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide
For Each sh In Workbooks(AWkb).Worksheets
Windows(AWkb).Activate
sh.Select
Range(ActiveSheet.PageSetup.PrintArea).Select 'Mon plantage
s'effectue ici au 2e passage sur une feuille où j'ai bien une zone
d'impression...
Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set PPSlide > PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
PPSlide.Shapes.Paste.Select
Set PPSlide = Nothing
Set Diapo > PPPres.Slides.Add(Index:=PPApp.ActiveWindow.Selection.SlideRange.SlideIndex
+ 1, Layout:=ppLayoutBlank)
Next sh
Set PPPres = Nothing
Set PPApp = Nothing
End Sub
Je suis en train de réaliser un script qui va balancer des images d'Excel dans PowerPoint... mon problème est que si ça fonctionne bien pour la première diapo, ça plante à la 2e. J'ai un message "Erreur d'exécution '1004': La méthode 'Range' de l'objet '_Global' a échoué" sur un simple select d'une plage de donnée... :-/
Sub Xls_a_Ppt() Dim PPApp As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim AWkb As String
AWkb = ActiveWorkbook.Name ModelePowerPoint 'ouvre une instance PPT avec mon modèle Set PPApp = GetObject(, "Powerpoint.Application") Set PPPres = PPApp.ActivePresentation PPApp.ActiveWindow.ViewType = ppViewSlide
For Each sh In Workbooks(AWkb).Worksheets Windows(AWkb).Activate sh.Select Range(ActiveSheet.PageSetup.PrintArea).Select 'Mon plantage s'effectue ici au 2e passage sur une feuille où j'ai bien une zone d'impression... Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture Set PPSlide > PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex) PPSlide.Shapes.Paste.Select Set PPSlide = Nothing Set Diapo > PPPres.Slides.Add(Index:=PPApp.ActiveWindow.Selection.SlideRange.SlideIndex + 1, Layout:=ppLayoutBlank) Next sh Set PPPres = Nothing Set PPApp = Nothing End Sub
michdenis
Bonjour,
Roule cette macro, cela va te dire si tu as vraiment une zone d'impression pour chacune des feuilles Si cette zone n'existe pas pour certaines feuilles, il ne faut pas te surprendre que ta macro plante ! '------------------------ Sub test() For Each Sh In Workbooks(AWkb).Worksheets MsgBox Sh.PageSetup.PrintArea Next End Sub '------------------------
MichD -------------------------------------------- "HD" a écrit dans le message de groupe de discussion : ihk6uq$1drr$
Bonjour,
Je suis en train de réaliser un script qui va balancer des images d'Excel dans PowerPoint... mon problème est que si ça fonctionne bien pour la première diapo, ça plante à la 2e. J'ai un message "Erreur d'exécution '1004': La méthode 'Range' de l'objet '_Global' a échoué" sur un simple select d'une plage de donnée... :-/
Sub Xls_a_Ppt() Dim PPApp As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim AWkb As String
AWkb = ActiveWorkbook.Name ModelePowerPoint 'ouvre une instance PPT avec mon modèle Set PPApp = GetObject(, "Powerpoint.Application") Set PPPres = PPApp.ActivePresentation PPApp.ActiveWindow.ViewType = ppViewSlide
For Each sh In Workbooks(AWkb).Worksheets Windows(AWkb).Activate sh.Select Range(ActiveSheet.PageSetup.PrintArea).Select 'Mon plantage s'effectue ici au 2e passage sur une feuille où j'ai bien une zone d'impression... Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture Set PPSlide PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex) PPSlide.Shapes.Paste.Select Set PPSlide = Nothing Set Diapo PPPres.Slides.Add(Index:=PPApp.ActiveWindow.Selection.SlideRange.SlideIndex + 1, Layout:=ppLayoutBlank) Next sh Set PPPres = Nothing Set PPApp = Nothing End Sub
-- @+ HD
Bonjour,
Roule cette macro, cela va te dire si tu as vraiment une zone d'impression pour chacune des feuilles
Si cette zone n'existe pas pour certaines feuilles, il ne faut pas te surprendre que ta macro plante !
'------------------------
Sub test()
For Each Sh In Workbooks(AWkb).Worksheets
MsgBox Sh.PageSetup.PrintArea
Next
End Sub
'------------------------
MichD
--------------------------------------------
"HD" a écrit dans le message de groupe de discussion : ihk6uq$1drr$1@saria.nerim.net...
Bonjour,
Je suis en train de réaliser un script qui va balancer des images d'Excel
dans PowerPoint... mon problème est que si ça fonctionne bien pour la
première diapo, ça plante à la 2e. J'ai un message "Erreur d'exécution
'1004': La méthode 'Range' de l'objet '_Global' a échoué" sur un simple
select d'une plage de donnée... :-/
Sub Xls_a_Ppt()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim AWkb As String
AWkb = ActiveWorkbook.Name
ModelePowerPoint 'ouvre une instance PPT avec mon modèle
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide
For Each sh In Workbooks(AWkb).Worksheets
Windows(AWkb).Activate
sh.Select
Range(ActiveSheet.PageSetup.PrintArea).Select 'Mon plantage
s'effectue ici au 2e passage sur une feuille où j'ai bien une zone
d'impression...
Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set PPSlide PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
PPSlide.Shapes.Paste.Select
Set PPSlide = Nothing
Set Diapo PPPres.Slides.Add(Index:=PPApp.ActiveWindow.Selection.SlideRange.SlideIndex
+ 1, Layout:=ppLayoutBlank)
Next sh
Set PPPres = Nothing
Set PPApp = Nothing
End Sub
Roule cette macro, cela va te dire si tu as vraiment une zone d'impression pour chacune des feuilles Si cette zone n'existe pas pour certaines feuilles, il ne faut pas te surprendre que ta macro plante ! '------------------------ Sub test() For Each Sh In Workbooks(AWkb).Worksheets MsgBox Sh.PageSetup.PrintArea Next End Sub '------------------------
MichD -------------------------------------------- "HD" a écrit dans le message de groupe de discussion : ihk6uq$1drr$
Bonjour,
Je suis en train de réaliser un script qui va balancer des images d'Excel dans PowerPoint... mon problème est que si ça fonctionne bien pour la première diapo, ça plante à la 2e. J'ai un message "Erreur d'exécution '1004': La méthode 'Range' de l'objet '_Global' a échoué" sur un simple select d'une plage de donnée... :-/
Sub Xls_a_Ppt() Dim PPApp As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim AWkb As String
AWkb = ActiveWorkbook.Name ModelePowerPoint 'ouvre une instance PPT avec mon modèle Set PPApp = GetObject(, "Powerpoint.Application") Set PPPres = PPApp.ActivePresentation PPApp.ActiveWindow.ViewType = ppViewSlide
For Each sh In Workbooks(AWkb).Worksheets Windows(AWkb).Activate sh.Select Range(ActiveSheet.PageSetup.PrintArea).Select 'Mon plantage s'effectue ici au 2e passage sur une feuille où j'ai bien une zone d'impression... Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture Set PPSlide PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex) PPSlide.Shapes.Paste.Select Set PPSlide = Nothing Set Diapo PPPres.Slides.Add(Index:=PPApp.ActiveWindow.Selection.SlideRange.SlideIndex + 1, Layout:=ppLayoutBlank) Next sh Set PPPres = Nothing Set PPApp = Nothing End Sub
-- @+ HD
HD
Si cette zone n'existe pas pour certaines feuilles, il ne faut pas te surprendre que ta macro plante !
Effectivement, j'ai une feuille où la zone d'impression renvoyée est vide... alors que j'ai pourtant bien une zone d'impression. Je peux imprimer les données de la feuille en question sans problème. Mais c'est vrai que dans "Mise en page / Feuille / Zone d'impression" je n'ai rien... Il me faut donc plutôt utiliser Application.UsedRange qui correspond donc à ce que j'imprime lorsque la zone d'impression n'est pas définie... Ok, c'est corrigé.
Merci à vous deux.
-- @+ HD
Si cette zone n'existe pas pour certaines feuilles,
il ne faut pas te surprendre que ta macro plante !
Effectivement, j'ai une feuille où la zone d'impression renvoyée est vide...
alors que j'ai pourtant bien une zone d'impression. Je peux imprimer les
données de la feuille en question sans problème. Mais c'est vrai que dans
"Mise en page / Feuille / Zone d'impression" je n'ai rien... Il me faut donc
plutôt utiliser Application.UsedRange qui correspond donc à ce que j'imprime
lorsque la zone d'impression n'est pas définie... Ok, c'est corrigé.
Si cette zone n'existe pas pour certaines feuilles, il ne faut pas te surprendre que ta macro plante !
Effectivement, j'ai une feuille où la zone d'impression renvoyée est vide... alors que j'ai pourtant bien une zone d'impression. Je peux imprimer les données de la feuille en question sans problème. Mais c'est vrai que dans "Mise en page / Feuille / Zone d'impression" je n'ai rien... Il me faut donc plutôt utiliser Application.UsedRange qui correspond donc à ce que j'imprime lorsque la zone d'impression n'est pas définie... Ok, c'est corrigé.