IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Past Special in ppt from excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut Past Special in ppt from excel
    Bonjour à tous,

    je suis en train d'écrire une macro qui créée des tableaux sous excel, les formatte et créée des documents ppt pour les insérer.
    Je galère pour retoucher ces tableaux sous powerpoint.

    Plus précisement (cf code ci-dessous) je n'arrive pas a faire appel a la forme que j'ai copié dans powerpoint pour, par exemple, en changer la taille de police.
    J'ai bien compris textframe ne s'appliquait qu'à une shape et qu'ici ma shp est un Object mais si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim shp as shape
    Set shp = PptPre.Slides(p2 + 1).Shapes.PasteSpecial(DataType:=8)
    VBA me renvoie une erreur "type mismatch".
    A l'inverse dans le code ci-dessous j'ai une erreur sur la dernière ligne.

    Toute aide est la bienvenue !
    Merci beaucoup par avance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Dim App As Object
    Dim PptPre As Object
    Dim nbshpe As Byte
    Dim shpe As Object
    Dim sld As Object
    Dim shp As Object
     
    Set App = CreateObject("Powerpoint.application")
    App.Visible = True
    Set PptPre = App.Presentations.Add
    PptPre.PageSetup.SlideSize = ppSlideSizeOnScreen
    PptPre.ApplyTheme "C:\Users\35984\AppData\Roaming\Microsoft\Templates\Document Themes\caveat.thmx"
     
    Set sld = PptPre.Slides.Add(Index:=p2 + 1, Layout:=ppLayoutBlank)
    Worksheets("VBA GF output").Cells(4 + p2 * UBound(Table2outputGF), i + m).Resize(UBound(Table2outputGF, 1), lon).Select
    Selection.Copy
    Set shp = PptPre.Slides(p2 + 1).Shapes.PasteSpecial(DataType:=8)
    shp.TextFrame.TextRange.Characters.Font.Size = 10

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, peut-être ici : Piloter PowerPoint

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set shp = PptPre.Slides(p2 + 1).Shapes.PasteSpecial(DataType:=8)
    Tu ne peux pas combiner les parenthèses et les paramètres nommés. C'est l'un ou l'autre. Encore qu'avec Office 2010 (jamais essayé avec Office 2016) j'étais obligé de faire ainsi:

    Dans l'application même : paramètres nommés uniquement
    Par pilotage OLE : parenthèses uniquement

    Mais je pense que tu as un second problème. Je ne pense pas que PowerPoint connaisse
    Regarde plutôt cette page :

    https://msdn.microsoft.com/fr-fr/vba...hod-powerpoint

    D'autre part, dans PowerPoint, un texte dans une forme est traité par shape.textframe.textrange

    Tu as un petit exemple très sommaire sur cette page

    un peu plus de détails:
    TextFrame

    TextRange

    Avec des liens pour te promener...

  4. #4
    Candidat au Club
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut
    Hello Clémentmarcotte,

    merci beaucoup pour ta réponse.
    Alors pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim shp as shape
    Set shp = PptPre.Slides(p2 + 1).Shapes.PasteSpecial(DataType:=8)
    Ne fonctionne pas mais uniqument parce que shp est défini en tant que shape,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim shp as Object
    Set shp = PptPre.Slides(p2 + 1).Shapes.PasteSpecial(DataType:=8)
    Fonctionne bien


    En revanche je n'arrive pas à sélectionner la forme ainsi créée - comme si il ne reconaissait pas mon paste special comme une nouvelle forme créée.
    Et dans le code proposé j'avais bien fait appelle a textframe.texterange!

    Je continue de chercher..

  5. #5
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Bonjour,

    Tu peux essayer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim shp as Object
    Set shp = PptPre.Slides(p2 + 1).Shapes.PasteSpecial(DataType:=8).Select
     
    PptPre.ActiveWindow.Selection.ShapeRange.Left = 495
    PptPre.ActiveWindow.Selection.ShapeRange.Top = 39

  6. #6
    Candidat au Club
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut
    Merci à tous pour votre aide,

    le problème venait du fait que pastspecial renvoie un shapeRange et non pas une shape..
    en rajoutant un (1) a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set shpe = PptPre.Slides(p2 + 1).Shapes.PasteSpecial(DataType:=8)(1)
    shpe.Height = 410
    shpe.Width = 640
    shpe.Left = 40
    shpe.Top = 70
    Cela fonctionne bien.

    En revanche la seule facon pour changer la taille de police du tableau que j'ai trouvé est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For r = 1 To shpe.Table.Rows.Count
    For s = 1 To shpe.Table.Columns.Count
    shpe.Table.cell(r, s).shape.TextFrame.TextRange.Font.Size = 10
    Next s
    Next r
    Ce qui en plus d'être laid, est particulièrement lent.
    Connaitriez une facon plus élégante de changer la taille de police d'un tableau dans son intégralité ?

    Merci encore,

Discussions similaires

  1. paste speciale erreur 1004
    Par nabelou1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/01/2009, 17h33
  2. Forcer le Paste Special Value
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/09/2008, 20h49
  3. lecture speciale d une cellule Excel
    Par lolipop65 dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/08/2008, 23h26
  4. paste special / pop up window
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/05/2008, 14h05
  5. Supprimer un tableau Powerpoint (PPT) depuis Excel VBA
    Par pontoise dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2008, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo