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

VBA PowerPoint Discussion :

Copier des éléments d'une diapositive dans une autre


Sujet :

VBA PowerPoint

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Copier des éléments d'une diapositive dans une autre
    Bonjour


    Je souhaite en cliquant sur un bouton présent sur le slide 2 copier un objet (tableau lié à une page XL) présent dans le slide 5 et le coller dans mon slide 2 à la place d'un autre objet (tableau).

    => je sais identifier le nom de l'objet (merci starec pour la boucle permettant l'identification des shapes

    => Comment selectionner et copier le tableau lié dans le slide 5 ?
    => comment coller le tableau dans le slide 2 à la place du tableau existant ?

    d'avance merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    J'ai fait un petit test sous PowerPoint 2007

    Soit une bouton de commande sur le slide 2 cmdCopierColler

    Sur l'évènement Clique de ce bouton tu mets le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub cmdCopierColler_Click()
        ActivePresentation.Slides(5).Shapes(1).Copy
        ActivePresentation.Slides(2).Shapes.Paste
    End Sub
    Je savais que la shape 1 était mon tableau Excel.

    Comme tu as compris comment identifier l'objet, tu identifies les différentes shapes.
    Après le copier, tu détruis l'autre tableau (Méthode delete de Shape).

    Quand tu réouvres ton fichier, tu verras que la mise à jour du tableau copier se fait, donc la liaison sur le fichier Excel est conservée.

    Starec

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci Starec pour l'info ça fonctionne. je copie et colle le tableau dans le slide souhaité.
    Par contre j'ai un doute sur ma méthode !!!


    le but de ma manip est de copier un tableau présent dans un des slides de ma présentation en fonction du choix de l'utilisateur (x boutons)

    - avantages :
    rapide et rendu nickel

    - inconvénients :
    * L’utilisateur peut cliquer sur +sieurs boutons successivement, ce qui m'oblige par code à supprimer le tableau précédemment copié.
    * Lorsque je passe au slide suivant le précédent garde le denier tableau copié, je n'ai pas trouvé le procédé lors de l'évènnement transition pour le supprimer
    * A la fin du diaporama je ne veux pas sauvegarder les modifs , j'ai donc ajouté un slide avec un bouton pour quitter sans sauvegarder : c'est moyen comme méthode mais je n'ai pas trouvé d'évènement "Fermeture présentation" pour mettre le code



    Autre méthode : j'ai essayé en utilisant une UF avec copie écran du slide contenant le tableau Mais le rendu est très très moyen.

    Si vous avez une autre méthode merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par xcbilx Voir le message
    Par contre j'ai un doute sur ma méthode !!!
    le but de ma manip est de copier un tableau présent dans un des slides de ma présentation en fonction du choix de l'utilisateur (x boutons)

    - avantages :
    rapide et rendu nickel

    - inconvénients :
    * L’utilisateur peut cliquer sur +sieurs boutons successivement, ce qui m'oblige par code à supprimer le tableau précédemment copié.
    Effectivement si l'utilisateur a plusieurs choix, il faut que tu gères cela
    * Lorsque je passe au slide suivant le précédent garde le denier tableau copié, je n'ai pas trouvé le procédé lors de l'évènnement transition pour le supprimer
    Pour gérer les évènements il faut

    Créer un module de classe que tu nommes EventClassModule
    A l'intérieur du colle le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Public WithEvents App As Application
     
    Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
     
        Dim sldw As SlideShowWindow
        Set sldw = Wn
        MsgBox sldw.View.CurrentShowPosition
     
    End Sub
    Ensuite dans un module standard tu colles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
     
    Dim X As New EventClassModule
    Sub InitializeApp()
        Set X.App = Application
    End Sub
    Tu te places dans la sub et tu cliques sur F5

    A chaque changement de diapositive tu vas déclencher l'évènement SlideShowNextSlide a l'intérieur une msgbox t'indiquera la numéro de slide, à toi de mettre ce que tu veux faire selon le slide avec un Select case

    Je t'invite à taper évènement dans l'aide VB pour avoir une explication plus compléte

    * A la fin du diaporama je ne veux pas sauvegarder les modifs , j'ai donc ajouté un slide avec un bouton pour quitter sans sauvegarder : c'est moyen comme méthode mais je n'ai pas trouvé d'évènement "Fermeture présentation" pour mettre le code
    C'est le même principe que précédemment à tester avec PresentationClose

    Tu verras que dans le module de classe en sélectionnant APP, tu auras un liste déroulante avec les évènements à gérer.

    Je sais que ce n'est pas évident à appréhender.

    A chaque modif dans le code il faut ré exécuter ce qu'il y a dans le module standard.

    Starec

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci Starec pour tes réponses mais j'ai encore besoin de qques services

    Questions

    1-Comment renommer les modules de classe ? (possible avec pwp 2003)

    -J'ai créé deux modules de classe ( EventClassModule et PresentationClose nommer respectivement classe 1 et 2 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Public WithEvents App As Application
    Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
        Dim a, bidon
        Dim sldw As SlideShowWindow
        Set sldw = Wn
       ' MsgBox sldw.View.CurrentShowPosition
        a = sldw.View.CurrentShowPosition
        Select Case a
          Case 18
           bidon = suppress()  'appel function pour suppression dernier élément copié'
        End Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Public WithEvents App As Application
     
    Private Sub App_PresentationClose(ByVal Pres As Presentation)
     
     Application.ActivePresentation.Saved = msoTrue
     Application.Quit
    End Sub
    -------------------------------------------------------

    J'ai créé un module standard pour activer les 2 modules de classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
     
    'Dim X As New EventClassModule
    'Dim y As New PresentationClose
    Dim X As New Classe1
    Dim y As New Classe2
    Function InitializeApp()
        Set X.App = Application
        Set y.App = Application
    End Function

    En mode PPT

    Bon C'est OK pour le module classe1 mais KO pour le modules classe2 il me pose la question "voulez vous sauvegarder...."


    En mode PPS

    Pour que les modules de classe soient activées j'ai copie le code présent dans le module standard dans un des boutons du slide qui me permet de copier-coller des tableaux présents dans un des slides de ma présentation
    Ca marche nickel pour activer le module de classe 1 mais toujours KO pour l'événement PresentationClose idem mode PPT

    2 - Comment forcer PWP à ne pas poser la question de sauvegarde du document en mode PPT/PPS ?

    D'avance merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu n'as pas besoin de créer 2 modules de classe, mais les deux sub dans un seul module.

    Starec

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci pour l'info

    - Mais peux-tu me dires comment renommer le module de classe (pour info) ?

    - Ok pour mettre deux Sub dans le même module de classe mais cela ne me résolve pas mon problème de message de sauvegarde à la fin de l'exécution du pwp (ppt ou pps)

    merci pour ton aide

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Pour renommer un module de classe, il faut appuyer sur F4 pour afficher la fenêtre propriété. Cependant, si tu le renommes, il faut renommer les déclarations tel que :

    Je jette un coup d'œil pour la sauvegarde.

    Starec

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Salut Starec

    As-tu trouvé une solution pour mon problème de sauvegarde ?

    merci

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par xcbilx Voir le message
    Salut Starec
    As-tu trouvé une solution pour mon problème de sauvegarde ?
    merci
    Non, je n'ai pas eut beaucoup de temps ces temps-ci.

    Starec

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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