Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Powerpoint > VBA PowerPoint

Réponse
 
Outils de la discussion
Vieux 16/04/2008, 21h39   #1 (permalink)
Invité régulier
 
Date d'inscription: mars 2008
Messages: 16
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

Dernière modification par Philippe JOCHMANS ; 17/04/2008 à 04h29
xcbilx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/04/2008, 04h52   #2 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 9 964
Envoyer un message via MSN à Philippe JOCHMANS
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 :
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
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/04/2008, 18h52   #3 (permalink)
Invité régulier
 
Date d'inscription: mars 2008
Messages: 16
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
xcbilx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/04/2008, 05h50   #4 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 9 964
Envoyer un message via MSN à Philippe JOCHMANS
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
Citation:
* 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 :
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 :
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

Citation:
* 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
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2008, 15h04   #5 (permalink)
Invité régulier
 
Date d'inscription: mars 2008
Messages: 16
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 :
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 :
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 :
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

Dernière modification par Philippe JOCHMANS ; 25/04/2008 à 16h23 Motif: Ajout des balises codes (sélection du code + #), ce n'est pas facultatif
xcbilx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2008, 16h24   #6 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 9 964
Envoyer un message via MSN à Philippe JOCHMANS
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
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2008, 18h28   #7 (permalink)
Invité régulier
 
Date d'inscription: mars 2008
Messages: 16
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
xcbilx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2008, 19h02   #8 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 9 964
Envoyer un message via MSN à Philippe JOCHMANS
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 :

Code :
Dim X As New Classe1
Je jette un coup d'œil pour la sauvegarde.

Starec
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/05/2008, 21h07   #9 (permalink)
Invité régulier
 
Date d'inscription: mars 2008
Messages: 16
Par défaut

Salut Starec

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

merci
xcbilx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/05/2008, 05h58   #10 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 9 964
Envoyer un message via MSN à Philippe JOCHMANS
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
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Powerpoint > VBA PowerPoint

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide