Macro de création de powerpoint et variables globales

Bonjour à tous !

J'ai pour projet de créer un fichier VBA qui m'aidera a créer des powerpoints! J'ai fait une première ébauche du projet en une macro unique pour faire des tests. Sauf que voilà, je veux maintenant développer le fichier, et que ma macro principale utilise de multiples procédures (je code en python à la base, je voudrais faire quelque chose plus proche de la programmation objet que d'une procédure unique à rallonge). Pour ce faire, je veux déclarer, les powerpoints créés et ceux ouverts comme des variables globales pour les utiliser dans les procédures mais quand je fais ça, tout fonctionne correctement sauf la dernière ligne (Ppa.Quit): les powerpoints restent ouverts. Est ce que quelqu'un est capable de m'expliquer ce problème svp ?

Pourtant si je duplique la ligne, la deuxième Ppa.Quit ne fonctionne car Ppa est déjà fermé selon le code...

Merci d'avance à tous!

Public Ppa As PowerPoint.Application
Public Ppp_pres As PowerPoint.Presentation
Public Ppp_page_de_garde As PowerPoint.Presentation
Public Ppp_Autocall As PowerPoint.Presentation

Sub Test1_Demo4()

'Extraction nom de la présentation
Dim pr_name As String
pr_name = Sheets("App_sheet").Cells(1, 2)

'On montre le path vers le file souhaité
Dim path As String
path = "XXXX"

' ---- Première Partie: Page de garde -----

Set Ppa = New PowerPoint.Application
Ppa.Visible = True

'Création de la présentation "hote"
Set Ppp_pres = Ppa.Presentations.Add
Ppp_pres.SaveAs (path & "\" & pr_name & ".pptx")

'Ouverture présentation de contenue
Set Ppp_page_de_garde = Ppa.Presentations.Open(path & "\Page_de_garde.pptx")

'Objectif démo2: copier coller une slide
'On va copier coller la page de garde
Ppp_pres.Slides.InsertFromFile path & "\Page_de_garde.pptx", 0, 1, 1

' ---- Deuxième Partie: PPT Autocall ----

'Test conditionnel
If Sheets("App_sheet").Cells(2, 2) = "Y" Then

    'Si c'est bon, alors ouvrir le ppt et mettre les slides à la suite de notre présentation:

    'Ouverture présentation "Autocall"
    Set Ppp_Autocall = Ppa.Presentations.Open(path & "\XXX.pptx")

    'Objectif démo2: copier coller une slide
    'On va copier coller la page de garde
    Ppp_pres.Slides.InsertFromFile path & "\XXX.pptx", 1, 1, 3

End If

'sauvegarde de la nouvelle présentation
Ppp_pres.SaveAs (path & "\" & pr_name & "_test.pptx")

'Fermeture du premier fichier
Ppa.Quit

End Sub

Bonjour,

En VBA je pense qu'utiliser des variables publiques est une très mauvaise façon de programmer.

Il est préférable d'utiliser les arguments des procédures et des fonctions pour leur transmettre les variables, et pour les objets on les encapsule en utilisant leurs propriétés et leur méthodes.

Super Conseil !

Ce n'a m'été pas venu à l'idée tout de suite mais effectivement, comme en python :) !

Merci beaucoup

Rechercher des sujets similaires à "macro creation powerpoint variables globales"