Power Point Powerpoint : lancement automatique d'une macro à l'ouverture du fichier

jofdm

XLDnaute Occasionnel
Bonjour à tous,
Pourriez-vous me dire comment faire pour qu'une macro s'exécute automatiquement à l'ouverture de mon fichier Powerpoint ?
Merci d'avance pour votre aide
 

PMO2

XLDnaute Accro
Re : Powerpoint : lancement automatique d'une macro à l'ouverture du fichier

Bonjour,

Voici une approche un peu compliquée mais qui a le mérite de faire.

MARCHE A SUIVRE
1) ouvrez un nouveau PowerPoint
2) Dans un module standard, copiez le code suivant
Code:
Public ppApplication As New clsEvents
Sub Auto_Open()
Set ppApplication.ppApp = Application
End Sub 
Sub Auto_Close()
Set ppApplication.ppApp = Nothing
End Sub
3) Créez un module de classe, faites F4 et changez la propriété (Name) Classe1 par clsEvents puis copiez le code suivant
Code:
Public WithEvents ppApp As Application
Private Sub ppApp_AfterNewPresentation(ByVal Pres As Presentation)
MsgBox "C'est l'évènement Nouvelle présentation"
End Sub
Private Sub ppApp_PresentationClose(ByVal Pres As Presentation)
MsgBox "C'est l'évènement Fermeture"
End Sub
Private Sub ppApp_PresentationNewSlide(ByVal Sld As Slide)
MsgBox "C'est l'évènement Nouvelle diapositive"
End Sub
Private Sub ppApp_PresentationOpen(ByVal Pres As Presentation)
MsgBox "C'est l'évènement Ouverture"
End Sub
Private Sub ppApp_SlideSelectionChanged(ByVal SldRange As SlideRange)
MsgBox "C'est l'évènement Sélection Change"
End Sub
4) Dans PowerPoint, faites menu Fichier/Enregistrer sous… Type de fichier : Macro complémentaire PowerPoint (*.ppa) et cliquez sur Enregistrer
5) Faites menu Outils/Macros complémentaires… et dans la boîte Macros complémentaires cliquez sur Ajouter un nouveau
6) Sélectionnez la macro complémentaire .ppa qui vient d’être créée et cliquez sur OK
7) Fermez PowerPoint
8) Ouvrez un PowerPoint et, si tout s’est bien passé, vous devez y voir des évènements qui s’exécutent.

La démarche étant faite, vous pouvez modifier le code à votre usage puis refaire la démarche.

Cordialement.

PMO
Patrick Morange
 

noisy

XLDnaute Nouveau
Bonjour à tous,

je déterre ce poste, desolé...avec mes maigres connaissances, je trouve pas !

Le code ci dessus marche très bien (même sous la pack office 2010) a l’exception de l'ouverture

j'ai bien tout fais (modulo mettre ppam à la place de ppa...), les msgbox apparaissent bien pour changement de page et fermeture mais pas pour l'ouverture...

Quelqu'un à une idée?
 
Dernière édition:

PMO2

XLDnaute Accro
Bonjour noisy,

Le code est obsolescent car il concernait Office 2003, tout à changé depuis.
Vous voulez faire quoi précisément (intercepter les évènements : PresentationOpen / AfterNewPresentation / AfterPresentationOpen / NewPresentation / etc) ?
 

noisy

XLDnaute Nouveau
Bonjour,

Merci de votre retour PMO2

je souhaiterais lancer une macro à l'ouverture d'un pptm (si possible pps?!).
la macro serait un mgs box donnant un choix si oui = création / si non = modification
et en fonction de ce choix, j'ouvre en // du ppt (que je garde ouvert) un xls (création) ou un autre xls (si modif).

Cordialement
Noisy
 

PMO2

XLDnaute Accro
Bonjour noisy,
Code approprié à votre demande.

MARCHE A SUIVRE
1) ouvrez un nouveau PowerPoint et sauvegardez le avec le nom noisy.pptm
2) Dans un module standard, copiez le code suivant

VB:
Public ppApplication As New clsEvents
Sub Auto_Open()
Set ppApplication.ppApp = Application
End Sub
Sub Auto_Close()
Set ppApplication.ppApp = Nothing
End Sub

3) Créez un module de classe, faites F4 et changez la propriété (Name) Classe1 par clsEvents puis copiez le code suivant

VB:
Public WithEvents ppApp As Application

Private Sub ppApp_WindowActivate(ByVal Pres As Presentation, ByVal Wn As DocumentWindow)
'### Les 2 lignes qui suivent servent à exclure tout autre PowerPoint non concerné
'### Adaptez la constante LE_BON_PPT du nom de la bonne présentation PowerPoint
'### Si on ne le fait pas n'importe quel PowerPoint verra apparaître la MsgBox
Const LE_BON_PPT As String = "noisy.pptm"
If Application.ActivePresentation.Name <> LE_BON_PPT Then Exit Sub
'###
Dim rep&
'---
rep& = MsgBox(Prompt:="Pour une création tapez OUI" & vbLf & _
  "Pour une modification tapez NON", _
  Buttons:=vbYesNo, _
  Title:="Création ou Modification")
If rep& = vbYes Then
  '/// le code pour une céation
  '..... votre traitement
ElseIf rep& = vbNo Then
  '/// le code pour une modification
  '..... votre traitement
End If
End Sub

4) Dans PowerPoint, faites Bouton Office / Enregistrer sous… Type de fichier : Complément PowerPoint (*.ppam) et cliquez sur Enregistrer
5) Faites Bouton Office / Options PowerPoint / Compléments / Gérer : Compléments PowerPoint et cliquez sur Atteindre puis Ajouter un nouveau
6) Sélectionnez la macro complémentaire .ppam qui vient d’être créée et cliquez sur OK
7) Fermez PowerPoint
8) Ouvrez le PowerPoint concerné et, si tout s’est bien passé, vous devez y voir l'évènement WindowActivate qui s’exécute. Sur un autre PowerPoint NON concerné l'évènement WindowActivate ne devrait pas s''exécuter.
 

Pièces jointes

  • Dossier noisy.zip
    70.1 KB · Affichages: 21

mromain

XLDnaute Barbatruc
Bonjour à tous,

Ci-joint un exemple via la customisation du ruban.

Ce code XML de customisation suivant :
Code:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RibbonOnLoad">

</customUI>
fait que la macro RibbonOnLoad est exécutée au chargement du ruban, donc à l’ouverture de la présentation.

A+
 

Pièces jointes

  • Présentation1.zip
    23.7 KB · Affichages: 25

Discussions similaires

Réponses
2
Affichages
73

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG