IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ PowerPoint

logo
Sommaire > Macros, VBA et fonctions avancées
        Où se trouve l'enregistreur de Macro sous PowerPoint 2007 ?
        Pourquoi les macros ne fonctionnent-elles pas?
        Existe-t-il une fonction en VBA permettant d'obtenir le nombre de diapositives dans PowerPoint?
        Comment sauvegarder une diapositive en JPEG?
        Comment enregistrer une diapositive au format image ?
        Comment changer la couleur d'une forme automatique sur laquelle on clique ?
        Comment boucler sur toutes les checkBoxes d'une présentation ?
        Comment insérer des diapositives provenant d'une autre présentation, dans la présentation ouverte ?
        Comment calculer la durée d'une présentation dont les diapositives sont paramétrés pour défiler automatiquement ?
        Comment associer une macro à l'évènement 'Déplacement de la souris' sur un Shape ?
        Comment masquer totalement une présentation pendant l'éxécution d'une macro ?
        Comment réaliser un complément PowerPoint pour générer un diaporama à partir d'un dossier ?
        Comment réaliser un complément PowerPoint pour extraire les images d'une présentation ?
        Comment récupérer la taille graphique d'une zone de texte?
        Comment supprimer les liaisons Excel/PowerPoint à l'aide d'une macro?
        Comment déterminer l'heure d'arrêt d'un diaporama lancé en continu?
        Quel code VBA dois-je appliquer à un bouton pour fermer/quitter un diaporama?
        Je cherche à construire un Powerpoint à partir d'une macro qui lit les données contenues dans un fichier Excel. Comment faire?
        Comment faut-il faire pour réaliser un questionnaire sous PowerPoint, qui permette de répondre en tapant du texte (un ou plusieurs mots), puis de vérifier le ou les mots tapés afin d'afficher un message de réussite ou d'échec?
        Comment mettre un aperçu miniature d'une diapositive depuis une autre diapositive, cela en mode diaporama ?
        Comment quitter PowerPoint avec VBA?
        Comment exécuter des actions à la fermeture d'un diaporama dans PowerPoint ?
        Pourquoi mes diapositives n'apparaissent-elles pas dans l'éditeur VB?
        Comment renommer les objets d'un diaporama ?
        Comment renommer les objets d'un diaporama à l'aide d'une macro-complémentaire ?
        Comment avoir une info-bulle sur le passage de la souris ?
        Comment enlever les messages d'avertissements ?

rechercher
precedent    sommaire       telechargermiroir


Où se trouve l'enregistreur de Macro sous PowerPoint 2007 ?
auteur : Starec
Vous ne trouverez pas l'enregistreur de macro sous PowerPoint, celui-ci a été retiré.
Cependant vous pouvez toujours taper du code, car l'éditeur VB existe toujours.


Pourquoi les macros ne fonctionnent-elles pas?
auteur : annedeblois
Il faut vérifier le niveau de sécurité qui est appliqué à PowerPoint sur l'ordinateur. Pour ce faire, il faut aller dans le menu Outils, choisir Macros et choisir ensuite Sécurité. Si le niveau de sécurité est élevé ou très élevé, il faudra l'abaisser faute de quoi les macros sont désactivées.


Existe-t-il une fonction en VBA permettant d'obtenir le nombre de diapositives dans PowerPoint?
auteur : bidou
Oui:

        Presentation("MaPres").Slides.Count
        

Comment sauvegarder une diapositive en JPEG?
auteur : bidou

        Presentation("MaPres").Slides(1).Export "c:\madiapo", "JPG"
        

Comment enregistrer une diapositive au format image ?
auteur : SilkyRoad
Private Sub CommandButton1_Click()
        Dim NomImage As String

        NomImage = "C:\imageTemp.jpg"
    
        'Supprime l'image si elle existe déja
        If Dir(NomImage) <> "" Then Kill NomImage
     
        'Exporte le 1er Slide au format image
        ActivePresentation.Slides(1).Export NomImage, "jpg"
        End Sub

Comment changer la couleur d'une forme automatique sur laquelle on clique ?
auteur : SilkyRoad
Il suffit de programmer la macro suivante et l'affecter à la forme automatique (clic droit dessus et Paramètre des actions).
Sub changecolor ()
        Activepresentation.slides(numero de ta diapo).shapes(numero de ton image).Fill.Forecolor.RGB = RGB(255, 0, 0)
        end sub

Comment boucler sur toutes les checkBoxes d'une présentation ?
auteur : SilkyRoad
Dim Obj As Shape
        Dim Resultat As String

        For i = 1 To ActivePresentation.Slides.Count

        For Each Obj In ActivePresentation.Slides(i).Shapes
          If Obj.Type = msoOLEControlObject Then
             If Obj.OLEFormat.ProgID = "Forms.CheckBox.1" Then
                Resultat = Resultat & ActivePresentation.Slides(i).Name _
                & " / " & Obj.Name & " / " & Obj.OLEFormat.Object.Value & vbCrLf
             End If
          End If
        Next Obj

       Next i

       MsgBox Resultat
       End Sub

Comment insérer des diapositives provenant d'une autre présentation, dans la présentation ouverte ?
auteur : SilkyRoad
'expression.InsertFromFile(FileName, Index, SlideStart, SlideEnd)
         'Cet exemple montre comment insérer les diapositives 1 à 4 provenant
         'de "maPresentation2.ppt", à la suite de la diapositive 2 dans la présentation "maPresentation1.ppt"

         Sub InsereDiapositives()
         Dim pptDoc As Presentation

         Set pptDoc = Application.Presentations.Open(FileName:="C:\maPresentation1.ppt")

         'expression.InsertFromFile(FileName, Index, SlideStart, SlideEnd)
         'Cet exemple montre comment insérer les diapositives 1 à 4 provenant
         'de "maPresentation2.ppt", à la suite de la diapositive 2 dans la présentation "maPresentation1.ppt"
         pptDoc.Slides.InsertFromFile "C:\maPresentation2.ppt", 2, 1, 4
         End Sub

Comment calculer la durée d'une présentation dont les diapositives sont paramétrés pour défiler automatiquement ?
auteur : SilkyRoad
L'influence éventuelle des vitesses et style de transition n'est pas prise en compte.
Sub Defile()
    Dim i As Integer
        Dim x As Long
        
        For i = 1 To Ppp1.Slides.Count
            x = x + Ppp1.Slides(i).SlideShowTransition.AdvanceTime
        Next i
        
        MsgBox x
End Sub

Comment associer une macro à l'évènement "Déplacement de la souris" sur un Shape ?
auteur : SilkyRoad
Sub OnMouveMouse()
    With ActivePresentation.Slides(1) _
        .Shapes(3).ActionSettings(ppMouseOver)
            .Action = ppActionRunMacro
            .Run = "NomMacroDeclenchee"
            .AnimateAction = True
    End With
End Sub

Comment masquer totalement une présentation pendant l'éxécution d'une macro ?
auteur : SilkyRoad
Indiquez l'argument WithWindow:=msoFalse lors de l'ouverture de la présentation.
Nota:
Cette solution ne permet pas l'utilisation de la méthode Select lors de la manipulation du fichier PPT par macro
Sub MasquerPPT()
    Dim pptDoc As Presentation
    Set pptDoc = Application.Presentations.Open("C:\maPresentation.ppt", WithWindow:=msoFalse)
End Sub

Comment réaliser un complément PowerPoint pour générer un diaporama à partir d'un dossier ?
auteur : argyronet
Voir ce tutoriel dans la page d'argyronet.


Comment réaliser un complément PowerPoint pour extraire les images d'une présentation ?
auteur : argyronet
Voir ce tutoriel dans la page d'argyronet.


Comment récupérer la taille graphique d'une zone de texte?
auteur : annedeblois

          Largeur = ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.BoundWidth
          Hauteur = ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.BoundHeight
          

Comment supprimer les liaisons Excel/PowerPoint à l'aide d'une macro?
auteur : annedeblois

        Sub Liaisons()
          For Each sld In ActivePresentation.Slides
            For Each Forme In sld.Shapes
              If Forme.Type = msoLinkedOLEObject Then
              Forme.LinkFormat.AutoUpdate = ppUpdateOptionManual
              End If
            Next
          Next
        End Sub
        

Comment déterminer l'heure d'arrêt d'un diaporama lancé en continu?
auteur : ouisansdoute
Sub TempsMax()
        HeureFermeture = Now + TimeValue("00:00:10")
        While Now < HeureFermeture 
          With ActivePresentation.SlideShowSettings
             .ShowType = ppShowTypeSpeaker
             .LoopUntilStopped = msoTrue
             .ShowWithNarration = msoTrue
             .ShowWithAnimation = msoTrue
             .RangeType = ppShowAll
             .AdvanceMode = ppSlideShowUseSlideTimings
             .PointerColor.RGB = RGB(255, 0, 0)
             .Run
          End With
        Wend
        ActivePresentation.Close
        End Sub
        

Quel code VBA dois-je appliquer à un bouton pour fermer/quitter un diaporama?
auteur : ouisansdoute

        Private Sub CommandButton1_Click()
          ActivePresentation.Close
        End Sub
        
Par ailleurs il n'est pas nécessaire d'utiliser la méthode Click(). Je te proposerais de positionner un bouton standard et d'associer une macro simple à ton bouton.


Je cherche à construire un Powerpoint à partir d'une macro qui lit les données contenues dans un fichier Excel. Comment faire?

        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        'J'initialise mes variables
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open("D:\Documents\PERSO\truc.xls")

        xlApp.Visible = True

        xlBook.Sheets("Feuil1").Select 
        

Comment faut-il faire pour réaliser un questionnaire sous PowerPoint, qui permette de répondre en tapant du texte (un ou plusieurs mots), puis de vérifier le ou les mots tapés afin d'afficher un message de réussite ou d'échec?
Après avoir créé dans une diapositive, une zone de texte et un bouton (issus de la boite à outils contrôle), il suffit d'insérer dans la page de code :

        Private Sub CommandButton1_Click()
           Select Case TextBox1
             Case "Blanc", "blanc", "Blanche", "blanche"
               SlideShowWindows(1).View.GotoSlide (7)
             Case Else
               SlideShowWindows(1).View.GotoSlide (6)
           End Select
        End Sub
        
Il ne reste plus qu'à enchaîner le questionnaire à partir de la diapo 7 (dans l'exemple); quant à la diapo 6, elle permet de faire apparaître un message d'erreur, et un lien qui permet de renvoyer soit au début du questionnaire, soit à la suite ou autre.

Note:
Ne pas oublier de cocher l'option «Visionné sur une borne (plein écran)» dans «Paramètre du diaporama» (dans le menu Diaporama), afin d'empécher le défilement des diapos autrement que par les liens prévus.


Comment mettre un aperçu miniature d'une diapositive depuis une autre diapositive, cela en mode diaporama ?
1. ajoutez un CommandButton dans la 2eme diapositive (diapositive B dans votre projet)

2. rattachez à ce bouton la macro de lancement du UserForm

        Private Sub CommandButton1_Click()
        UserForm1.Show
        End Sub
        
3. Créez un UserForm dans la presentation , puis ajoutez-y un objet Image (nommé Image1)

        Option Explicit
 
        Dim nomImage As String
 
        Private Sub UserForm_Initialize()
           nomImage = "C:\imageTemp.jpg"
           'supprime l'image si elle existe déja
           If Dir(nomImage) <> "" Then Kill nomImage

           'exporte le 1er Slide au format image
           '(correspond au slide A dans ton projet )
           ActivePresentation.Slides(1).Export nomImage, "jpg"
           DoEvents
 
          'affiche l'image dans l'USF
          With Me.Image1
               .Picture = LoadPicture(nomImage)
               .PictureSizeMode = fmPictureSizeModeStretch
          End With
        End Sub
 
        Private Sub UserForm_Terminate()
          'supprime l'image lors de la fermeture de l'USF
          If Dir(nomImage) <> "" Then Kill nomImage
        End Sub
        
4. Testez votre presentation PowerPoint : lors du lancement du Userform, une image du 1er slide va être créée puis être affichée dans l'objet image.


Comment quitter PowerPoint avec VBA?
Voici le code pour envoyer la commande Alt + F4:

        SendKeys "%{F4}"
        pause = 0.25
        start = Timer
        Do While Timer < start + pause
            DoEvents
        Loop
        SendKeys "{NumLock}"
        GenerationSite.Hide
        

Comment exécuter des actions à la fermeture d'un diaporama dans PowerPoint ?
auteur : bbil
Pour cela il faut utiliser les actions évènementielles de l'application PowerPoint, la procédure est décrite dans l'aide en ligne et consiste dans un premier temps à créer un module de classe nommé par exemple GestionEvents, dans lequel on place la déclaration d'une variable application.

Public WithEvents App As Application
Le fonctionnement de la gestion des évènements doit être initialisé, par exemple par du code lancé par un bouton sur la première diapositive :

Dim X As New GestionEvents
Private Sub CommandButton1_Click()
        Set X.App = Application 
        SlideShowWindows(1).View.Next 'Passer à la diapositive suivante
End Sub
Pour finir on rajoute dans le module de classe GestionEvents les évènements souhaités.

Public WithEvents App As Application
'
' L'événement traité sur la sortie de powerpoint
'
Private Sub App_PresentationClose(ByVal Pres As Presentation)
     MsgBox "Au Revoir"
End Sub
        
'
' Un autre exemple d'événement :
'
Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
  MsgBox Wn.View.Slide.Name
End Sub

Pourquoi mes diapositives n'apparaissent-elles pas dans l'éditeur VB?
auteur : Starec
C'est normal, car les diapositives PowerPoint ne génèrent pas de procédures événementielles, contrairement aux feuilles Excel, aux pages Word ou aux formulaires Access.
Pour qu'une diapositive apparaisse, il faut positionner sur celle-ci un contrôle issu de la barre d'outils Boîte à Outils Contrôles. À ce moment vous pourrez mettre du code dans la diapositive.


Comment renommer les objets d'un diaporama ?
auteur : Starec
Lorsque vous insérez manuellement des objets dans un diaporama, PowerPoint va leur donner un nom (Rectangle 1, Ellipse 6, etc...), donc des noms peu parlants.

Le seul moyen qui existait pour nommer les éléments avec des noms cohérents, étaient d'ajouter les éléments par programmation.

Hors il est utile, lorsque vous voulez faire un peu de VBA, de donner des noms cohérents à des formes placées manuellement sur vos diapositives.

PowerPoint 2007 permet maintenant de nommer les éléments manuellement : Comment nommer un objet dans PowerPoint 2007 ?

Le code proposé va :

  • Se positionner sur chaque slide (diapositive de votre présentation).
  • Parcourir tous les éléments de votre diapositive en les sélectionnant (ce qui vous permettra de les visualiser).
  • Une boite de dialogue en haut à gauche vous indiquera le nom de la diapositive, le nom de l'élément.
  • Vous n'avez plus qu'à saisir le nouveau nom à la place de l'ancien, puis à valider et ainsi de suite.
Ce code est à utiliser lorsque vous créer votre présentation, et non en mode diaporama.

  • Copiez le code suivant dans un module de l'éditeur VBE (Alt + F11).
  • Positionnez le curseur de votre souris à l'intérieur de celui-ci.
  • Appuyez sur la touche F5 pour exécuter la routine.
  • La fenêtre de PPT passe alors au premier plan, une boite de dialogue en haut à gauche s'affiche, vous n'avez plus qu'à renommer au fur et à mesure.

Public Sub RenommerShapes()
    '=======================================================================================
    ' Procedure    : RenommerShapes
    ' Auteur       : Philippe JOCHMANS - http://starec.developpez.com
    ' Date         : 19/04/2008
    ' Commentaires : Cette procédure va permettre de renommer les shapes de slides
    '=======================================================================================
    
    ' ===== déclaration des variables =====
    Dim objSld As Slide         ' va permettre de parcourir les diapositives du diaporama
    Dim objShp As Shape         ' va permettre de parcourir les éléments d'une diapositive
    Dim strNom As String        ' pour récupérer le nouveau nom
    Dim strMessage As String    ' message qui sera affiché dans la boite de demande du nom
    
    ' ===== boucle ======
    ' on boucle sur l'ensemble des diapositives
    For Each objSld In ActivePresentation.Slides
        objSld.Select
        ' on boucle sur l'ensemble des shapes
        For Each objShp In objSld.Shapes
            ' création du message qui indiquera slide + shape
            objShp.Select
            strMessage = "Elément sélectionné :" & vbCrLf & _
                         "- Slide : " & objSld.Name & vbCrLf & _
                         "- Shape : " & objShp.Name
            strNom = InputBox(strMessage, "Modification des noms", objShp.Name, 0, 0)
            ' contrôle du nom
            ' si on supprime le nom, on reprend l'ancien
            If strNom = "" Or IsNull(strNom) Then
                strNom = objShp.Name
            End If
            objShp.Name = strNom
        Next objShp
    Next objSld
End Sub

Comment renommer les objets d'un diaporama à l'aide d'une macro-complémentaire ?
auteur : Arkham46
Voici une macro complémentaire qui va vous permettre de renommer les objets de vos diapositives.

Le fichier est livré en ppt (version 2000) pour que vous ayez la source.

A sauvegarder en macro complémentaire (ppa)

Puis "Outils" -> "Macro Complémentaires" pour installer le complément.

Dans tous vos powerpoints (sur le pc où le complément est installé) : sur click droit sur un objet shape, il y a alors une nouvelle entrée de menu : "Renommer xxxx"

Le fichier : Fichier PowerPoint


Comment avoir une info-bulle sur le passage de la souris ?
auteur : Starec
Pour avoir des infos-bulles lors du passage de la souris sur un élément d'une diapositive on peut utiliser les liens hypertextes.

Voici comment faire une info-bulle personnalisée.

Collez ce code dans un module standard.

Public Sub AffichageBulleForm(shpSelect As Shape)
    ' ===== déclaration des variables =====
    Dim shpBulle As Shape   ' il s'agit de l'info-bulle qui sera crée
    Dim sldParent As Slide  ' il s'agit d'une slide (diapositive ou se trouve la forme
    Dim t As Date           ' va servir pour la temporisation de l'affichage de l'info-bulle
    
    ' ===== affectation =====
    ' on récupére le slide
    Set sldParent = shpSelect.Parent
    
    ' ===== on crée la bulle =====
    
    Set shpBulle = sldParent.Shapes.AddShape(msoShapeRectangle, shpSelect.Left + shpSelect.Width, shpSelect.Top, 100, 100)
    With shpBulle
        .Name = "Bulle"
        ' couleur de fond
        .Fill.ForeColor.RGB = RGB(150, 150, 120)
        ' texte de la bulle
        .TextFrame.TextRange.Text = "toto"
        .TextFrame.WordWrap = msoTrue
        ' la forme s'adapte au texte
        .TextFrame.AutoSize = ppAutoSizeShapeToFitText
        ' couleur de la ligne
        .Line.ForeColor.RGB = RGB(200, 200, 100)
        ' position
        .Top = shpSelect.Top + 10
        .Left = shpSelect.Left + 10
    End With
    
    ' ===== on lance la temporisation ====
    t = Timer + 1
    Do Until Timer > t
        DoEvents
    Loop
    
    ' ===== on détruit la bulle =====
    sldParent.Shapes("Bulle").Delete
End Sub
Ensuite sur l'action du survol de votre élément par la souris, sélectionnez la routine AffichageBulleForm. L'info-bulle que vous pouvez paramétrer en forme et couleur, apparaitra 1 seconde.

Remarque : Toutes les formes n'ont pas le même effet, ici, il s'agit d'un rectangle tout simple.


Comment enlever les messages d'avertissements ?
auteur : Starec

Lorsque vous effectuez des créations dynamiques ou des suppressions d'objets par programmation dans un diaporama PowerPoint, et que vous ne voulez pas enregistrer celle-ci, un message vous demande lors de la fermeture du diaporama l'enregistrement de celui-ci.

Pour éviter ce message, utilisez le code suivant avant la fermeture de votre diaporama

Application.DisplayAlerts = ppAlertsAll

rechercher
precedent    sommaire       telechargermiroir

Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.