FAQ PowerPoint
FAQ PowerPointConsultez toutes les FAQ
Nombre d'auteurs : 20, nombre de questions : 150, dernière mise à jour : 10 juillet 2021
- 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.Count
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 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
Sub
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
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
'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
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, 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
=
ppAlertsAll
Les instructions suivantes vous permettent de récupérer les coordonnées du centre d'une diapositive (en points).
ActivePresentation.PageSetup.SlideHeight
/
2
ActivePresentation.PageSetup.SlideWidth
/
2
Cela 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
Sub
Les 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.