Bonjour,
comme indiqué en objet. j'ai une macro pour importer des graphes depuis excel vers powerpoint en gardant la forme source.
quand j’exécute la macro en mode pas par pas F8, ca fonctionne impec. il suffit que je l’exécute en mode F5 qu'elle exécute une partie (aléatoirement) mais pas d'autre. et je ne reçois aucun message d'erreur.
ex: elle copie le 1er graphe dans le 5 slide mais pas le 2eme dans le 6eme slide et colle la moitié dans un autre slide ....
si je refais ca, il va coller autres graphes mais pas d'autres ...
enfin ce que je comprends, c'est que le code ne laisse pas le temps pour que chaque étape soit terminée pour lancer la prochaine.
j'ai essayé d'introduire la fonction DoEvents un peu partout dans le code, mais rien ne change. peut être que je l'utilise mal, je sais pas.
ci-dessous un fragment du code ( il est long vu le nombre de graphes et slide a faire copier/coller).
Et merci d'avance pour votre aide.
comme indiqué en objet. j'ai une macro pour importer des graphes depuis excel vers powerpoint en gardant la forme source.
quand j’exécute la macro en mode pas par pas F8, ca fonctionne impec. il suffit que je l’exécute en mode F5 qu'elle exécute une partie (aléatoirement) mais pas d'autre. et je ne reçois aucun message d'erreur.
ex: elle copie le 1er graphe dans le 5 slide mais pas le 2eme dans le 6eme slide et colle la moitié dans un autre slide ....
si je refais ca, il va coller autres graphes mais pas d'autres ...
enfin ce que je comprends, c'est que le code ne laisse pas le temps pour que chaque étape soit terminée pour lancer la prochaine.
j'ai essayé d'introduire la fonction DoEvents un peu partout dans le code, mais rien ne change. peut être que je l'utilise mal, je sais pas.
ci-dessous un fragment du code ( il est long vu le nombre de graphes et slide a faire copier/coller).
Et merci d'avance pour votre aide.
Code:
Sub copierppt()
Dim PPT As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim NbShpe As Byte
Dim i As Integer
Set PPT = CreateObject("Powerpoint.Application")
PPT.Visible = True 'l'application sera visible
Set PptDoc = PPT.Presentations.Open("D:\Users\Desktop\MATRIX.pptx")
'5 ################### slide 5 ####################
PPT.ActiveWindow.View.GotoSlide Index:=5
ThisWorkbook.Worksheets("names").ChartObjects("names graphe1").Copy
PPT.ActiveWindow.Panes(1).Activate
PPT.CommandBars.ExecuteMso ("PasteSourceFormatting")
NbShpe = PptDoc.Slides(5).Shapes.Count
With PptDoc.Slides(5).Shapes(NbShpe)
.Name = "names graphe1"
.Left = 50
.Top = 230
.Height = 270
'.Width = 350
End With
DoEvents
' 6 ################### slides 6 ####################
PPT.ActiveWindow.View.GotoSlide Index:=6
ThisWorkbook.Worksheets("surmane").ChartObjects("surname graphe1").Copy
PPT.ActiveWindow.Panes(1).Activate
PPT.CommandBars.ExecuteMso ("PasteSourceFormatting")
NbShpe = PptDoc.Slides(6).Shapes.Count
With PptDoc.Slides(6).Shapes(NbShpe)
.Name = "Open surname graphe1"
.Left = 50
.Top = 230
.Height = 270
'.Width = 350
End With
' 7 ################### slide 7 ####################
PPT.ActiveWindow.View.GotoSlide Index:=7
ThisWorkbook.Worksheets("adress").ChartObjects("adress graphe1").Copy
PPT.ActiveWindow.Panes(1).Activate
PPT.CommandBars.ExecuteMso ("PasteSourceFormatting")
DoEvents
NbShpe = PptDoc.Slides(7).Shapes.Count
With PptDoc.Slides(7).Shapes(NbShpe)
.Name = "adress graphe1"
.Left = 50
.Top = 230
.Height = 270
'.Width = 350
End With
' 8 ################### slide 8 ####################
PPT.ActiveWindow.View.GotoSlide Index:=8
ThisWorkbook.Worksheets("statut").ChartObjects("statut graphe1").Copy
PPT.ActiveWindow.Panes(1).Activate
PPT.CommandBars.ExecuteMso ("PasteSourceFormatting")
NbShpe = PptDoc.Slides(8).Shapes.Count
With PptDoc.Slides(8).Shapes(NbShpe)
.Name = "statut graphe1"
.Left = 50
.Top = 240
.Height = 300
'.Width = 350
End With
Sheets("statut").Activate
Sheets("statut").Range("G21").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
PPT.ActiveWindow.Panes(1).Activate
PPT.CommandBars.ExecuteMso ("PasteSourceFormatting")
NbShpe = PptDoc.Slides(8).Shapes.Count
With PptDoc.Slides(8).Shapes(NbShpe)
.Name = "TCD1"
.Left = 88
.Top = 205
'.Height = 520
'.Width = 20
End With
'
'
' ................ jusqu'a la fin du code qui contient plusieurs slides ...