[Catégorie modifiée .Net -> VBA] macro qui fontionne bien en mode pas à pas, mai
cs_sisco27
Messages postés20Date d'inscriptionmardi 17 janvier 2012StatutMembreDernière intervention31 mai 2013
-
4 févr. 2013 à 11:34
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
4 févr. 2013 à 12:44
Bonjour,
je fonctionne (enfin presque) avec office 2010.
Je suis en train de faire une macro qui va me copier des cellules et des images dans les feuilles d'un classeur (à partir de la feuille9)
vers un fichier powerpoint existant.
La macro fonctionne en mode pas à pas, mais pas en l'executant directement.
pouvez vous m'aider?
merci
voici le code :
Sub presentation_auto2()
'necessite d'activer la reference Microsoft Powerpoint Object Library
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.Add 'ouverture fichier ppt
Set pow = GetObject(Class:="Powerpoint.Application")
Dim Feuille As Worksheet, I As Integer, J As Integer, Page As Integer, Photo As Integer
I = 1
Dim Cible
Cible = Shell("POWERPNT.EXE ""C:\Presentations CD\Présentation défauts CD Vierge.pptx""", 1)
'For Each Feuille In ThisWorkbook.Worksheets
Page = ThisWorkbook.Sheets.Count
If Page <= 8 Then
PPT.ActivePresentation.Close
PPT.Quit 'fermer powerpoint
MsgBox "Vous n'avez pas commencé l'analyse"
GoTo 1
End If
For K = 9 To Page
pow.ActivePresentation.Slides.Add I, ppLayoutBlank
ThisWorkbook.Sheets(K).Range("C1:I10").Copy
pow.ActivePresentation.Slides(I).Select
On Error Resume Next
pow.ActivePresentation.Slides(I).Shapes.PasteSpecial(ppPasteDefault, link:=True).Select
Photo = ThisWorkbook.Sheets(K).Pictures.Count
If Photo = 0 Then
GoTo 2
End If
ThisWorkbook.Sheets(K).Pictures.Copy
PptDoc.Slides(I).Shapes.Paste
2
I = I + 1
Next K
1
End Sub
A voir également:
[Catégorie modifiée .Net -> VBA] macro qui fontionne bien en mode pas à pas, mai
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 févr. 2013 à 12:44
Salut
Pas d'indentation du code (espaces en tête de ligne) pour présenter correctement les boucles et autres cascades de If : Moi, je n'essaye même plus de lire.
Supprime tous les On Error Resume Next de ton code et corrige tes méthodes pour ne pas avoir recours à cette horreur qui masque les défauts qui te permettront, peut être, de découvrir pourquoi ton code ne fonctionne pas.
Ce genre de ligne ne s'utilise que très rarement, sur des cas bien spécifiques et, de toute façon, DOIT être accompagné :
- D'un test du numéro d'erreur immédiatement après
- D'un retour à une gestion d'erreur normale "On Error Goto 0" ensuite
Goto 1 : Bien que les Goto soient à éviter, il serait judicieux d'utiliser des Labels, histoire d'être compréhensible/lisible :
Goto Fin
' ...
Fin:
' Ca reprend ici
Mais mieux vaut utiliser correctement les If-Then-Else que d'utiliser ces Goto.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)