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

Macros et VBA Excel Discussion :

Figer PowerPoint depuis Excel VBA (API)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut Figer PowerPoint depuis Excel VBA (API)
    Bonjour,

    Je génère des présentations PowerPoint depuis Excel en VBA et j'aimerai figer PowerPoint pendant la création des presentations.

    Il n'y a visiblement pas de méthode native de la classe PowerPoint.Application. La fonction API LockWindowUpdate devrait faire l'affaire, mais semblerait-il qu'elle ne fonctionne pas sous Windows 10 (Office 2013 32 bit)... Je n'ai pas besoin de rafraichir l'écran de PowerPoint une fois la création effectuée, car je me contante d'exporte les présentations en .pdf.

    D'après mes recherches le code suivant (minimaliste devrait pourtant fonctionner...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long
     
    Public Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
     
    '
    Sub noScreenUpdate()
     
        'création nouvelle presentation (vierge) via PowerPoint.Application...
     
        LockWindowUpdate hwndLock:=FindWindow(lpClassName:="PPTFrameClass", lpWindowName:=0&)
     
        'ajout de Slides, Shapes,...
     
        'export en pdf et fermeture de l'instance PowerPoint.Application
     
    End Sub
    Avez-vous une solution ?

    Merci par avance !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ne serait-il pas plus simple de rendre l'application PowerPoint invisible pendant l'opération.
    Par exemple avec des propriétés comme celles ci-dessous :
    https://docs.microsoft.com/fr-fr/off...cation.visible
    https://docs.microsoft.com/fr-fr/off...ow.windowstate

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut
    J'avais effectivement essayer avec PowerPoint.Application.Visible = False, mais il n'a semblé impossible de d'ajouter des éléments à la presentation courante (faudrait quand même que je re-vérifie). Quant à l'autre méthode, je n'ai pas encore ou essayer, car le site de Microsoft est bloqué depuis mon PC pro...

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Orbeaman Voir le message
    Quant à l'autre méthode, je n'ai pas encore ou essayer, car le site de Microsoft est bloqué depuis mon PC pro...
    Propriété DocumentWindow.WindowState (PowerPoint)

    Cette propriété renvoie ou définit l’état de la fenêtre spécifiée. Lecture-écriture.

    Syntaxe : expression. WindowState
    expression = Variable qui représente un objet DocumentWindow .

    Valeur renvoyée : PpWindowState

    Remarques
    La valeur de la propriété WindowState peut être une de ces constantes PpWindowState .
    ppWindowMaximized
    ppWindowMinimized
    ppWindowNormal

    Si l’état de la fenêtre est ppWindowNormal, la fenêtre n’est ni agrandie ni réduite.

    Exemple
    Cet exemple montre comment agrandit le premier membre de la collection DocumentWindows .
    Windows(1).WindowState = ppWindowMaximized

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut
    Merci pour ces précisions, j'imagine que c'est équivalent à l'API suivante (qui fonctionne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Declare Function ShowWindow Lib "user32" Alias "ShowWindow" ( _
                     ByVal hwnd As Long, _
                     ByVal nCmdShow As Long) As Long
    avec cCmdShow à SW_MINIMIZE (6). D'ailleurs, je viens de voir que SW_HIDE (0) cache la fenêtre. Je vais essayer de ce pas ...

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je ne vois pas trop l'intérêt d'ajouter une bibliothèque pour faire (en plus compliqué) ce qui existe déjà dans la bibliothèque standard de l'application.
    Je suis sans doute trop pragmatique.

Discussions similaires

  1. [XL-2010] Piloter POWERPOINT depuis Excel - Ajouter un nouveau slide après la 12ème ligne
    Par fidecourt dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/02/2011, 08h51
  2. [XL-2010] Piloter POWERPOINT depuis Excel - utilisation d'un modèle
    Par fidecourt dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 31/01/2011, 12h22
  3. [XL-2010] création d'un diaporama powerpoint depuis excel
    Par fidecourt dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/01/2011, 08h46
  4. [PPT-2003] Ouverture de PowerPoint depuis Excel
    Par PPz78 dans le forum Contribuez
    Réponses: 1
    Dernier message: 24/07/2010, 14h54
  5. piloter powerpoint depuis excel
    Par cocktails dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 28/07/2006, 09h42

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