formateur informatique

Déclencher un code VBA à l'ouverture de PowerPoint

Accueil  >  Bureautique  >  Powerpoint  >  Powerpoint VBA  >  Déclencher un code VBA à l'ouverture de PowerPoint
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Déclencher un code VBA à l'ouverture de PowerPoint

Contrairement à Excel ou Word, PowerPoint ne propose pas de gestionnaire d'événements par défaut. Dans Excel par exemple, l'événement Open associé à l'objet Workbook permet de déclencher un code à l'ouverture du classeur. C'est ainsi que, dans la formation sur la facturation automatisée avec un formulaire Excel, nous lancions l'affichage du UserForm à l'ouverture du classeur. D'ailleurs comme le montre la capture ci-dessous, de nombreux événements attachés à l'objet Workbook (Classeur), peuvent être gérés en VBA Excel.

Code VBA événement ouverture classeur Excel

En VBA PowerPoint, vous aurez beau chercher l'objet Presentation pour lui associer l'événement Open à gérer, vous ne le trouverez pas. Les gestionnaires d'événements existent pourtant bien dans PowerPoint avec VBA. Mais sans doute pour des raisons de sécurité, vous devez les activer dans une classe à instancier pour en faire un complément VBA à lier à PowerPoint. Une fois cette macro complémentaire ajoutée, tous les événements peuvent être interceptés. Ainsi il devient possible de déclencher un code à l'ouverture d'une présentation ou encore au changement de diapositive pendant le Diaporama. Ce code par exemple nous sera utile pour générer un diaporama à la volée, en fonction des photos présentes dans un dossier, dès le démarrage de la présentation. Il est donc essentiel de pouvoir générer les événements en VBA PowerPoint.

Classe du gestionnaire d'événements
Nous devons commencer par créer une classe pour activer le gestionnaire d'événements. Nous allons donc utiliser un module de classe dans une nouvelle présentation PowerPoint.
  • Démarrer PowerPoint et créer une nouvelle présentation vierge,
Comme dans toute application Office, vous pouvez basculer dans l'éditeur de code VBA grâce au raccourci clavier ALT + F11. Mais avant cela, nous avons besoin d'un onglet particulier, celui qui permet d'afficher le ruban Développeur. La formation pour débuter en VBA Excel, montre notamment comment afficher ce ruban. Si ce ruban n'est pas disponible sur votre interface :
  • Cliquer avec le bouton droit de la souris n'importe où dans le ruban Accueil,
  • Dans le menu contextuel, choisir Personnaliser le ruban,
  • Dans la liste de droite de la boîte de dialogue qui suit, cocher la case Développeur et valider par Ok,
Ruban développeur pour macros et Visual Basic PowerPoint

Si vous cliquez sur l'onglet Développeur désormais disponible, vous affichez son ruban. Vous notez notamment la présence de contrôles de formulaire.
  • Cliquer sur l'onglet Développeur en haut de la fenêtre pour afficher son ruban,
  • Dans la section Code, cliquer sur le bouton Visual Basic,
Vous basculez ainsi dans l'éditeur de code VBA PowerPoint.
  • Cliquer sur le menu Insertion en haut de l'éditeur,
  • Dans la liste, choisir Module de classe,
  • Cliquer sur le menu Affichage en haut de la fenêtre,
  • Dans la liste, choisir Fenêtre Propriétés,
Le VBA étant un langage orienté objets, cette fenêtre permet de régler les propriétés d'un objet actif. Pour un bouton de formulaire par exemple, il peut s'agir de son nom, de sa couleur ou encore de son texte par exemple. Au centre de l'écran, figure la page de code, pour l'instant vide, du module de classe.
  • Saisir gestionEv pour la propriété Name dans la fenêtre Propriétés,
Changer nom, proriété Name pour module de classe VBA PowerPoint

Pour être exploitée avec ses propriétés et méthodes, une classe doit être instanciée par son nom. Un nom explicite est donc forcément judicieux. Instancier une classe consiste à déclarer un objet qui hérite de cette classe, soit de ses propriétés et méthodes qu'il peut alors gérer.
  • Cliquer dans la feuille de code vierge au centre de l'écran,
  • Ajouter la ligne de code suivante :
Public WithEvents app As Application

Nous déclarons explicitement un objet pour activer et gérer les événements en VBA PowerPoint. Cet objet est désormais reconnu comme un objet de l'application et des événements lui sont associés.
  • En haut de la feuille de code, dérouler la liste de gauche,
  • Choisir l'objet app, présent grâce à notre déclaration publique,
  • Dérouler ensuite la liste de droite et choisir l'événement PresentationOpen,
Liste des événements à générer pour VBA PowerPoint

Vous créez ainsi la procédure événementielle :

Private Sub app_PresentationOpen(ByVal Pres As Presentation)

End Sub


C'est elle, une fois le gestionnaire activé, qui permettra de déclencher un code VBA à l'ouverture d'une présentation PowerPoint. En déroulant la liste de droite, vous avez constaté qu'il est possible d'intercepter un très grand nombre d'événements, en VBA PowerPoint.

Pour l'instant, nous avons simplement besoin de vérifier que nous sommes en mesure de déclencher un code VBA, à l'ouverture d'une présentation PowerPoint. Nous allons donc réaliser un petit test sous forme de message qui apparaît à l'écran.
  • Entre les bornes de la procédure événementielle, ajouter la ligne de code suivante :
MsgBox 'L'événement est bien intercepté et géré à l'ouverture'

Le MsgBox est une fonction VBA que nous avons déjà largement exploitée en Visual Basic pour Excel. Elle permet d'afficher un message à l'écran, dans une boîte de dialogue. Ce message est le texte passé en argument, saisi entre guillemets.

Instancier la classe - Initialiser les événements
Nous devons maintenant initialiser ce gestionnaire d'événements en instanciant cette classe.
  • Cliquer sur le menu Insertion en haut de l'éditeur de code,
  • Dans la liste, choisir Module,
  • Dans la fenêtre Propriétés, le renommer Initialisation,
Un module permet d'écrire des procédures de code, directement liées à la présentation PowerPoint.
  • Dans sa feuille de code, au centre de l'écran, saisir la déclaration suivante :
Dim even As New gestionEv

Le mot clé Dim permet de déclarer une variable ou un objet. C'est d'ailleurs ce qu'enseigne la formation VBA Excel sur les variables et leur dimensionnement. Ici, nous déclarons un objet que nous nommons even. Nous le déclarons comme un objet héritant de la classe que nous venons de créer (As New gestionEv). Il peut donc désormais piloter les propriétés et méthodes de cette classe. Dans notre cas, c'est lui qui va gérer les événements que nous devons initialiser. Il ne reste plus qu'à activer le gestionnaire d'événements à l'ouverture.
  • A la suite du module, ajouter la procédure suivante :
Sub Auto_Open()
Set even.app = Application
End Sub


A l'ouverture donc, nous réalisons le lien entre l'application et le gestionnaire d'événements que nous avons créé. Le code est déjà terminé.

Macro complémentaire et gestionnaire d'événements.
Pour que les événements puissent être interceptés, cette classe doit désormais être exploitée à chaque utilisation de PowerPoint. Et pour qu'elle s'active à chaque démarrage de PowerPoint, il suffit d'en faire un complément (ppam) à lier à l'application.
Code Visual Basic en complément ppam pour événements PowerPoint
  • Revenir sur la présentation PowerPoint par Alt + F11 par exemple,
  • Cliquer sur l'onglet Fichier en haut à gauche de la fenêtre,
  • Dans la liste, choisir Enregistrer sous puis cliquer sur Parcourir,
  • Dans la zone Type de la boîte de dialogue, choisir Complément PowerPoint(*.ppam), comme l'illustre la capture ci-dessus,
  • Lui attribuer un nom, par exemple : gestionEve.ppam et cliquer sur Enregistrer,
Vous avez noté que PowerPoint a redirigé l'enregistrement dans un dossier spécial, celui des macros complémentaires des logiciels Office. Vous trouverez ainsi au même emplacement les compléments que vous créerez avec Excel. C'est d'ailleurs ce que nous avions vu lors de la formation sur la création de fonctions en VBA Excel. Grâce au complément, ces fonctions de feuille de calcul, créées en VBA, devenaient disponibles pour n'importe quel classeur ouvert dans Excel. Nous devons maintenant lier ce complément et l'application PowerPoint.
  • Dans la section Compléments du ruban Développeur, cliquer sur le bouton Compléments PowerPoint,
  • Dans la boîte de dialogue, cliquer sur le bouton Ajouter un nouveau,
  • Puis, double cliquer sur la macro complémentaire gestionEve.ppam et valider en fermant,
Lier macro complémentaire à PowerPoint pour gestion événements VBA

Désormais à chaque ouverture de PowerPoint, le complément qui lui est lié, s'active. Donc du code VBA s'exécutera systématiquement. Nous devons donc modifier les règles de sécurité par défaut de l'application. Les macros peuvent être potentiellement dangereuses si elles sont développées par des personnes malveillantes.
Changer niveau de sécurité des macros VBA PowerPoint
  • Dans la section Code du ruban Développeur, cliquer sur le bouton Sécurité des macros,
  • Cocher la case Activer les macros, comme l'illustre la capture ci-dessus, puis valider,
Avec ce réglage, le complément pourra se déclencher en même temps que PowerPoint s'ouvre, sans restriction. Mais désormais faites très attention de ne pas exécuter des applications PowerPoint développées par des tiers. Pensez au moins à les analyser à l'antivirus en amont. Le VBA est un langage de programmation. Plus aucun verrou ne le bloque, donc toutes les possibilités sont ouvertes, y compris les plus désastreuses.
  • Ouvrir n'importe quelle présentation PowerPoint pour tester le complément,
Code VBA déclenché sur événement ouverture (Open) de la présentation PowerPoint

Comme vous le constatez, en même temps que la présentation s'ouvre, le message que nous avons codé avec la fonction VBA MsgBox, s'affiche à l'écran. Cela signifie que nous sommes parvenus à intercepter l'événement généré à l'ouverture d'une présentation. Et donc nous avons déclenché un code en conséquence.

Si vous souhaitez intercepter d'autres événements comme ceux qui se produisent par exemple à l'exécution du diaporama ou au changement de diapositive, c'est très simple. Il suffit de modifier la classe avec de nouvelles procédures événementielles. Si dans la liste de droite de l'éditeur de code, vous choisissez l'événement SlideShowBegin de l'objet app, vous créez la procédure qui déclenchera un code au démarrage du diaporama.

Bien sûr à ce stade, le code que nous avons produit à titre de test est non seulement inutile mais aussi parasite. Il se déclenchera à chaque ouverture de PowerPoint. Dans une prochaine formation, l'objectif sera pour nous, de déclencher un code sur reconnaissance du nom de la présentation. L'objet ActivePresentation associé à sa propriété Name nous permettra de réaliser ce test. Alors nous pourrons exécuter un code dédié en lançant sa procédure grâce à l'objet Application et sa méthode Run.

En attendant vous pouvez désactiver le complément. Pour ce faire, vous cliquez sur le bouton Compléments PowerPoint du ruban Développeur et vous décochez la case de la macro complémentaire.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn