View.paste invalid request clipboard is empty or contains.

Bonjour à tous,

Je reviens vers vous car je n'arrive pas à comprendre ni résoudre un problème sur la copie d'un tableau excel dans powerpoint.

Ci-dessous un apercu du code qui copie/colle un tableau dans powerpoint. Je suis obligé de coller en paste.view car le tableau doit pouvoir être modifié dans powerpoint (donc pas de bitmap / shapes /etc..).

Sheets("Avances 2-Retards").Select
Range("A1:I1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ppt.ActivePresentation.Slides(2).Select
ppt.ActiveWindow.View.Paste

Pour des raisons qui m'échappent, le code s'arrête au moment de coller avec le message d'erreur suivant :
view.paste invalid request clipboard is empty or contains data which may not be pasted here. (erreur 80048240).

J'ai surfé sur plusieurs sites qui parlent de problèmes de versions entre VBA & Powerpoint mais pas de solution à l'horizon.

Merci d'avance pour votre aide!

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,
    Dans ce que tu copie y aurait pas des formules ?
    A+
    1. Bonjour,

      Non aucune formule (8 colonnes et ~30 lignes).
      En avance de phase je fait un filtre mais que ce soit avec ou sans filtre j'ai toujours le même bug... :/
      1. Contributeur
        Quelle genre de données tu met dans le presse-papier ?
        1. Des dates / du texte (format standard) / des chiffres (format nombres).
          Sur les forums microsoft il parle de vider le presse papier, je vais faire des tests voir si cela fonctionne.

          Si autres idées, je suis toujours preneur (et un peu désespéré..)
          1. Contributeur
            Ce sera probablement un peu (plus) compliquer mais à la place d'un simple Copy intéresse-toi à l'objet "ClipBoard" voire sur MSDN, tu a la possibilité de - vider le presse papier - sélectionner le type de données.
            Si tu trouve pas revient je verrais pour t'aiguiller.
            A+
            Note : Je peu pas tester avec PPT

            Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
            Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
            1. Re bonjour et merci pour ton aide.

              J'essaye plusieurs techniques pour l'instant sans succès:

              a.
              Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As LongPublic Declare Function EmptyClipboard Lib "user32" () As Long
              Public Declare Function CloseClipboard Lib "user32" () As Long
              Sub Flush()
              OpenClipboard (0&)
              EmptyClipboard
              CloseClipboard
              End Sub

              A priori cela permet de nettoyer le clipboard. Cela dit je suis encore bien novice en VBA et je n'arrive pas à faire fonctionner ce code... (je n'arrive pas à déclarer le user32 qui pourtant existe chez moi..)

              b
              Application.CutCopyMode = False que l'on trouve souvent sur les forums ne marche pas dans mon cas (ce fait après le paste et mon besoin est de le faire avant...)

              c. Utiliser comme tu l'a dit clipboard.clear. J'imaginais faire un truc du genre:
              sheet(table_X).clipboard.clear ou Window.clipboard.clear mais rien ne marche encore.. (bon j'en suis au début du courage je suis qu'il existe une solution^^)

              Merci pour ton aide^^
              1. Contributeur
                Re,
                J'ai retrouvé ça, dans mes archives, je précise que le code n'est pas de moi.
                Voir si ça peu t'aider.
                A+
                PS : c'est une façon de faire, ont se sert de l'objet "DataObject" de MsForm
                EDIT : Quel références tu à dans VBA de ppt ?

                Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .