Macro s'execute en F8 parfaitement, mais pas en F5

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.

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 ...

Salut municipum ,

Sans ton fichier, tu risques bien de ne pas recevoir de réponse

Cordialement.

25matrix.pptx (46.11 Ko)
25matrix-de-test.xlsm (48.06 Ko)
Yvouille a écrit :

Salut municipum ,

Sans ton fichier, tu risques bien de ne pas recevoir de réponse

Cordialement.

Salut Yvouille,

j'ai essaye de mettre un fichier quoi que c'est pasl'oroginal, mais le probleme est le meme.

ci-joint le fichier alors.

Salut,

Il est inutile de reprendre mes messages dans les tiens ; ils sont à disposition juste en-dessus

Si tu veux reprendre une partie de mon message pour le mettre en évidence, pourquoi pas, mais pas mes messages complets.

Pour en venir à ta demande, je ne sais pas comment tu peux dire que ça fonctionne bien ; j’ai un message d’erreur chaque deux lignes de code. Mais bon, c’est peut être moi qui ne sais pas utiliser tes fichiers.

De toute façon je dois t’avouer que je semble dépassé et je vais m’arrêter là. Si personne n’intervient sur ce fil car il est déjà entamé, indique-le éventuellement comme ‘’Résolu’’ et ouvre-en un autre. Outre le conseil déjà donné de joindre des fichiers, je peux encore te conseiller d’indiquer plus précisément la marche à suivre. Afin de tester tes deux fichiers par exemple, je ne sais pas où il faut les placer l’un par rapport à l’autre dans mon arborescence, ou s’il faut qu’ils soient les deux ouverts à l’écran au moment du lancement de ta macro, ou ………

Dans l’espoir de t’avoir quand même permis d’avancer.

Amicalement.

Salut,

et merci pour la reponse.

je crois qu'il suffit juste de modifier le chemin du fichier powerpoint. si tu le mets sur ton bureau, faut juste changer le chemin dans le code. sinon je vois pas pourquoi ca marche pas pour toi.

en resume, comme tu vois, le code prend les graphes et les mis dans le powerpoint, si tu fais step by step ca fonctione, il suffit de lancer la macro en F5 et la ca prend un graphe, mais pas le reste...

Rechercher des sujets similaires à "macro execute parfaitement pas"