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

Contribuez Discussion :

[VBA Excel] Piloter PowerPoint [À publier]


Sujet :

Contribuez

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut [VBA Excel] Piloter PowerPoint
    Les exemples proposés nécéssitent d'activer la référence "Microsoft Powerpoint x.x Object Library"
    Dans l'éditeur de macros:
    Menu Outils
    Références
    Cochez la ligne "Microsoft Powerpoint x.x Object Library"
    Cliquez sur OK pour valider
    (x.x dépend de la version d'Office installée sur votre poste.)





    créer une présentation PPT
    ********************


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Sub NouvellePresentation()
    Dim PptApp As PowerPoint.Application
    Dim PptDoc As PowerPoint.Presentation
    Dim Diapo As PowerPoint.Slide
    Dim Sh As PowerPoint.Shape
    Dim Cs1 As ColorScheme
    Dim NbShpe As Integer
     
    Set PptApp = CreateObject("Powerpoint.Application")
    Set PptDoc = PptApp.Presentations.Add
     
    With PptDoc
     
        '--- Ajoute un Slide
        .Slides.Add Index:=1, Layout:=ppLayoutBlank
        'Crée une zone de texte (AddLabel)
        Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
            Left:=100, Top:=100, Width:=150, Height:=60)
        'insère la valeur de la Cellule A1 dans une zone de texte
        Sh.TextFrame.TextRange.Text = Range("A1")
        'Modifie la couleur du texte
        Sh.TextFrame.TextRange.Font.Color = RGB(255, 100, 255)
     
     
        '--- Ajoute un nouveau slide et le positionner en 2eme position
        Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)
     
        'copie le 1er graphique contenu dans la feuille Excel active
        ActiveSheet.ChartObjects(1).Copy
        'collage dans la 2eme diapositive
        Diapo.Shapes.Paste
     
        'Compte le nombre de shapes dans la diapositive:
        'le dernier objet inséré correspond à l'index le plus élevé
        NbShpe = Diapo.Shapes.Count
     
        'Renomme et met en forme l'objet collé
        With Diapo.Shapes(NbShpe)
            .Name = "monGraph" 'personnalise le nom
            .Left = 150 'définit la position horizontale dans le slide
            .Top = 100 'définit la position verticale dans le slide
            .Height = 300 'hauteur
            .Width = 400 'largeur
        End With
     
     
        '--- Modifie la couleur de fond dans les différents Slides
        Set Cs1 = .ColorSchemes(3)
        Cs1.Colors(ppBackground).RGB = RGB(225, 233, 200)
        .SlideMaster.ColorScheme = Cs1
    End With
     
     
    'Sauvegarde la présentation
    'dans le meme répertoire que le classeur excel contenant la macro.
    PptDoc.SaveAs Filename:=ThisWorkbook.Path & "\" & "NouvellePresentation.ppt"
    'ferme la presentation
    PptDoc.Close
    'ferme powerpoint
    PptApp.Quit
     
    MsgBox "Opération terminée."
    End Sub



    Modifier une présentation
    ********************


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub ModifierPresentationExistante()
    Dim PptApp As PowerPoint.Application
    Dim PptDoc As PowerPoint.Presentation
     
    Set PptApp = CreateObject("Powerpoint.Application")
    PptApp.Visible = True
    Set PptDoc = PptApp.Presentations.Open("C:\LaPresentation.ppt")
     
    With PptDoc
        'copie la plage de cellules dans la feuille Excel active
        Feuil1.Range("B1:H5").Copy
        'Effectue un collage dans la 2eme diapositive
        .Slides(2).Shapes.Paste
     
        With .Slides(2).Shapes(.Slides(2).Shapes.Count)
            .Name = "monTableau" 'Renomme l'objet collé
            .Left = 150 'position horizontale dans le slide
            .Top = 100 'position verticale dans le slide
            .Height = 300 'hauteur
            .Width = 400 'largeur
        End With
     
        'insère le contenu de la cellule A1 dans la deuxième zone de texte,
        'du 3eme slide
        .Slides(3).Shapes(2).TextFrame.TextRange.Text = Range("A1")
     
        'sauvegarde la présentation
        .Save
    End With
     
    'ferme la présentation
    PptDoc.Close
    'ferme powerpoint
    PptApp.Quit
     
    End Sub



    Comment masquer totalement powerPoint pendant l'éxécution d'une macro.
    ****************************************

    Indiquez l'argument WithWindow:=msoFalse lors de l'ouverture de la présentation.
    Cette solution ne permet pas l'utilisation de la méthode Select lors de la manipulation du fichier PPT.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set pptDoc = pptApp.Presentations.Open("C:\maPresentation.ppt", WithWindow:=msoFalse)




    Changer la source d'un classeur lié, dans une présentation powerPoint
    ********************************************


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Dim pwrPoint As PowerPoint.Application
    Dim Prez As PowerPoint.Presentation
    Dim targetMaj As String
    Dim Forme As PowerPoint.Shape
    Dim Diapo As PowerPoint.Slide
     
    Presentation = ThisWorkbook.Path & "\maPresentation.ppt"
    'Le nouveau classeur lié
    targetMaj = ThisWorkbook.Path & "\monClasseurMisAJour.xls"
     
    Set pwrPoint = CreateObject("PowerPoint.Application")
    pwrPoint.Visible = msoTrue
    Set Prez = pwrPoint.Presentations.Open(Presentation)
     
    'Boucle sur les Slide de la présentation
    For Each Diapo In Prez.Slides
        'Boucle sur les formes
        For Each Forme In Diapo.Shapes
            'Vérifie s'il s'agit d'un objet lié
            If Forme.Type = msoLinkedOLEObject Then
                'Vérifie si l'objet lié est un objet Excel
                If Forme.OLEFormat.progID = "Excel.Sheet.8" Then
                    'Modifie la source
                    Forme.LinkFormat.SourceFullName = targetMaj
                    'Mise à jour
                    Forme.LinkFormat.Update
            End If
        End If
        Next
    Next
     
    Prez.Save
    'ferme la présentation
    Prez.Close
    'ferme powerpoint
    pwrPoint.Quit



    Mettre à jour les données d'un graphique Excel incorporé dans une présentation
    *******************************************


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub MAJ_graphiqueDansPresentation()
    Dim appPPT As PowerPoint.Application
    Dim Sh As PowerPoint.Shape
    Dim Gr As Workbook
     
    Set appPPT = CreateObject("PowerPoint.Application")
    appPPT.Visible = msoTrue
    appPPT.Presentations.Open "C:\maPresentation.ppt"
     
    'Copie une plage de cellules dans la feuille active
    'Ces données vont être collées dans le classeur incorporé, dans ppt, servant
    'de source pour le graphique.
    ActiveSheet.Range("A1:G10").Copy
     
    'Le classeur incorporé est dans le 1er Slide
    With appPPT.ActivePresentation.Slides(1)
        'Boucle sur les formes pour retrouver l'objet Excel
        For Each Sh In .Shapes
            'Verifié s'il s'agit d'un objet incorporé
            If Sh.Type = msoEmbeddedOLEObject Then
                'Vérifie s'il s'agit d'une feuille graphique
                If Sh.OLEFormat.progID = "Excel.Chart.8" Then
                    Set Gr = Sh.OLEFormat.Object
                    'Colle les données dans la Feuil1 du classeur incorporé
                    'La feuil1 contient la source de données pour le graphique
                    Gr.Sheets("Feuil1").Range("A1").PasteSpecial
                    'réactive la première feuille du classeur incorporé
                    '(Le graphique est situé dans ce 1er onglet)
                    Gr.Sheets(1).Activate
                End If
            End If
        Next Sh
    End With
    End Sub



    Insérer des diapositives provenant d'une autre présentation (fermée) dans la présentation ouverte
    *********************************************


    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
    Sub piloterPowerPoint()
    Dim Ppa As PowerPoint.Application
    Dim Ppp1 As PowerPoint.Presentation
     
    Set Ppa = New PowerPoint.Application
    Ppa.Visible = True
    'Ouverture présentation
    Set Ppp1 = Ppa.Presentations.Open(Filename:="C:\maPresentation1.ppt")
     
    'expression.InsertFromFile(CheminPresentationSource, Index, SlideDebut, SlideFin)
    '---------------------------------------------------------------
    'Cet exemple montre comment insérer les diapositives 1 à 4 provenant
    'de "PresentationSource.ppt" à la suite de la diapositive 2, dans
    'la présentation "maPresentation1.ppt".
    Ppp1.Slides.InsertFromFile "C:\PresentationSource.ppt", 2, 1, 4
    End Sub



    Calculer la durée d'une présentation dont les Slides sont paramétrés pour défiler automatiquement
    *********************************************

    L'influence éventuelle des vitesses et style de transition n'est pas prise en compte


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Dim i As Integer
        Dim x As Long
     
        For i = 1 To Prez.Slides.Count
            x = x + Prez.Slides(i).SlideShowTransition.AdvanceTime
        Next i
     
        MsgBox x

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par SilkyRoad
    .....


    Changer la source d'un classeur lié, dans une présentation powerPoint
    ********************************************

    ....
    il ne manquerai pas la sauvegarde finale de la présentation ..?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    ...
    Next
     
    Prez.Save 
    'ferme la présentation
    Prez.Close
    'ferme powerpoint
    pwrPoint.Quit

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour Bbil

    OOuppss... Bien vu ... ;o)


    michel

Discussions similaires

  1. [XL-2007] VBA - Excel vers PowerPoint
    Par merlinus3000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2014, 13h05
  2. [VBA] VBA EXCEL pilote BO
    Par JFTIDDU dans le forum SDK
    Réponses: 2
    Dernier message: 30/07/2009, 14h55
  3. VBA excel : piloter BdD access et y importer fichier CSV
    Par hnokia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2007, 17h30
  4. [VBA-E]Excel vers powerpoint : copier/coller spécial
    Par illight dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/09/2006, 12h41
  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