[vba powerpoint] créer un sommaire automatique

Soyez le premier à donner votre avis sur cette source.

Vue 14 223 fois - Téléchargée 1 004 fois

Description

Créer et ajouter un sommaire automatique sous powerpoint. Cette macro crée une diapo Sommaire incluant chaque titre des autres diapo. La diapo Sommaire est insérée en deuxième position de la présentation.

Source / Exemple :


Public Sub AjouterSommaireAutomatique()
    Dim Diapo As Slide
    Dim txtSommaire As TextRange
    Dim y As Long

    ' crée un sommaire automatique
    ' ajoute une diapo en 2è position de présentation avec
    'la disposition de mise en forme n°2 du masque

    ' ajout d'une slide au début
    ActivePresentation.Slides.Add Index:=2, Layout:=ppLayoutText
    ' ajout d'un titre à la slide ajoutée
    ActivePresentation.Slides(2).Shapes(1).TextFrame.TextRange = "Sommaire"
    ' attribut une variable au texte du sommaire
    Set txtSommaire = ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange
    ' passe en revue toutes les slides pour récupérer leur titre
    For y = 3 To ActivePresentation.Slides.Count
        ' attribue une variable pour la slide en cours
        Set Diapo = ActivePresentation.Slides(y)
        'si la slide a un titre
        If Diapo.Shapes.HasTitle Then
            ' ajoute le titre au sommaire
            txtSommaire = txtSommaire & Diapo.Shapes.Title.TextFrame.TextRange.Text & vbNewLine
        End If
    Next y
End Sub

Conclusion :


Pour exécuter la macro, aller dans le menu macro et exécuter la macro AjouterSommaireAutomatique.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

johnvlesk
Messages postés
11
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
25 mai 2011
-
Hello, Sympa le code.

Ce qui pourrait être cool c'est de générer automatiquement des liens hypertextes sur les entrées de la TDM en indiquant le numéro de slide.

Un truc dans ce goût là.

CODE [

Public Sub AjouterSommaireAutomatique()
Dim Diapo As Slide
Dim txtSommaire As TextRange
Dim y As Long

' crée un sommaire automatique
' ajoute une diapo en 2è position de présentation avec
'la disposition de mise en forme n°2 du masque

' ajout d'une slide au début
ActivePresentation.Slides.Add Index:=2, Layout:=ppLayoutText
' ajout d'un titre à la slide ajoutée
ActivePresentation.Slides(2).Shapes(1).TextFrame.TextRange = "Sommaire"
' attribut une variable au texte du sommaire
Set txtSommaire = ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange
' passe en revue toutes les slides pour récupérer leur titre
For y = 3 To ActivePresentation.Slides.Count
' attribue une variable pour la slide en cours
Set Diapo = ActivePresentation.Slides(y)
'si la slide a un titre
If Diapo.Shapes.HasTitle Then
' ajoute le titre au sommaire avec numéro de diapo
txtSommaire = txtSommaire & Diapo.Shapes.Title.TextFrame.TextRange.Text & vbTab & Chr(9) & Diapo.SlideNumber & vbNewLine
'génération des hypertextes
txtSommaire.ActionSettings(ppMouseClick).Hyperlink.SubAddress = Diapo.SlideID & "," & Diapo.SlideIndex & "," & Diapo.Shapes.Title.TextFrame.TextRange.Text
End If
Next y

] CODE

Cela dit, la numérotation des slides pourraient éventuellement être dans une autre zone de texte qui serait sur la droite... question d'esthétique.

A++
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1 -
Merci de ta contribution john

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.