FAQ PowerPoint

FAQ PowerPointConsultez toutes les FAQ
Nombre d'auteurs : 20, nombre de questions : 150, dernière mise à jour : 10 juillet 2021
Sommaire→Macros, VBA et fonctions avancées→Macros, VBA et fonctions avancées Généralités- Pourquoi les macros ne fonctionnent-elles pas ?
- Où se trouve l'enregistreur de Macro sous PowerPoint 2007 ?
- Pourquoi mes diapositives n'apparaissent-elles pas dans l'éditeur VB ?
- Existe-t-il une fonction en VBA permettant d'obtenir le nombre de diapositives dans PowerPoint ?
- Comment mettre un aperçu miniature d'une diapositive depuis une autre diapositive, cela en mode diaporama ?
- 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 déterminer l'heure d'arrêt d'un diaporama lancé en continu ?
- Comment masquer totalement une présentation pendant l'exécution d'une macro ?
- Comment calculer la durée d'une présentation dont les diapositives sont paramétrés pour défiler automatiquement ?
- Comment insérer des diapositives provenant d'une autre présentation, dans la présentation ouverte ?
- Comment avoir une info-bulle sur le passage de la souris ?
- Comment enlever les messages d'avertissements ?
- Comment récupérer les coordonnées du centre d'une diapositive ?
- Comment ajouter une macro à la barre d'outils Accès rapide sur PPT 2007 ?
- Comment effectuer une action sur certaines diapositives ?
- Pourquoi le code VBA ne fonctionne pas lors de l'utlisation de la visionneuse ?
- Pourquoi mon code créé avec l'enregistreur de macro ne fonctionne pas en mode diaporama ?
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.
Vous ne trouverez pas l'enregistreur de macro sous PowerPoint, celui-ci a été retiré visuellement.
Cependant il existe une astuce, il suffit d'utiliser la combinaison Alt+O M E, mais l'enregistreur de macro
sous PowerPoint a des limites.
Vous pouvez toujours taper du code, car l'éditeur VB existe toujours.
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.
Oui:
Presentation("MaPres").Slides.Count1. 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 Sub3. Créez un UserForm dans la présentation , 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 présentation PowerPoint : lors du lancement du Userform, une image du 1er slide va être créée puis être affichée dans l'objet image.
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.
Une petite piste en utilisant la valeur de NOW pour limiter le temps maxi d'un diaporama.
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 SubIndiquez 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 SubL'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 '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 SubPour 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 SubEnsuite 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, apparaîtra 1 seconde.
Remarque : Toutes les formes n'ont pas le même effet, ici, il s'agit d'un rectangle tout simple.
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 = ppAlertsAllLes instructions suivantes vous permettent de récupérer les coordonnées du centre d'une diapositive (en points).
ActivePresentation.PageSetup.SlideHeight / 2ActivePresentation.PageSetup.SlideWidth / 2Cela est très utile lorsque l'on veut positionner des éléments.
Le point d'origine étant le coin haut-gauche de la diapositive.
Si vous possédez un fichier PowerPoint avec des routines que vous utilisez souvent, vous pouvez rajouter à la barre d'outils d'Accès rapide des macros.
Cliquez sur la flèche qui se trouve sur la droite de la barre d'outils, et sélectionnez Autres commandes
Dans la première liste déroulante sélectionnez Macros
- Sélectionnez la macro.
- Cliquez sur le bouton Ajouter pour mettre cette macro dans la deuxième liste.
- Cliquez sur le bouton Modifier si vous voulez changer l'icône de la macro.
Vous pouvez ainsi créer des fichiers PowerPoint 2007 différents pour chaque type d'actions ou de présentations
que vous souhaitez faire.
Lorsqu'on lance une routine de traitement sur plusieurs diapositives, il est possible d'en sélectionner certaines.
Pour cela on utilise la fonction Array pour sélectionner les diapositives à traiter.
L'exemple suivant rajoute une zone de texte aux diapositvies 1,3 et 5 d'une présentation.
Public Sub AjoutNom()
' déclaration
Dim objPresentation As SlideRange
Dim objSld As Slide
Dim objShp As Shape
' affectation des slides qui doivent être traités
Set objPresentation = ActivePresentation.Slides.Range(Array(1, 3, 5))
' parcours
For Each objSld In objPresentation
Set objShp = objSld.Shapes.AddTextbox(msoTextOrientationHorizontal, 25, 25, 300, 50)
With objShp.TextFrame.TextRange
.Text = "Offert par www.developpez.com"
.Font.Italic = msoTrue
End With
Next objSld
End SubLes différentes visionneuses PowerPoint ne gèrent pas les fichiers comportant du code VBA.
Si vous envoyez un fichier PowerPoint comportant du code, la personne qui le recevra devra posséder PowerPoint et non seulement la visionneuse.
Lorsque vous créez un code à l'aide de l'enregistreur de macro, vous retrouvez de nombreuses fois l'instruction Selection. Cette instruction ne fonctionne lorsque vous passez en mode diaporama, car il n'y a pas de sélection, il faut donc nommer correctement vos objets pour agir sur ceux-ci.






