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

VBA PowerPoint Discussion :

[PPT] Afficher le nombre de diapositives


Sujet :

VBA PowerPoint

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut [PPT] Afficher le nombre de diapositives
    Bonjour,

    Voila depuis hier je cherche comment faire pour afficher le nombre total de diapositive dans une presentation.
    Je voudrai un truc du genre:
    Page 3/13
    Page 4/13
    ...

    Donc j'ai trouver pour le numero de diapositive mais le nombre total j'ai pas reussi.

    Pourriez vous m'indiquer dans quel menu on fait ca?

    Merci

  2. #2
    Membre éclairé
    Avatar de marabout
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Août 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Août 2006
    Messages : 650
    Points : 852
    Points
    852
    Par défaut
    En VBA, tu peux récupérer cette info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ns = ActivePresentation.Slides.Count

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut
    Salut,

    Merci donc je suppose que le principe c'est de faire une fonction VB et de l'appeler.
    Mais j'y connai rien en fait.
    Pourrais-tu m'indiquer la marche à suivre? ou quelqu'un d'autre.

    Sinon ben tant pis je met le nombre en dur...

    Sinon pour ce que ca interesse, j'ai trouver sur ce site un add-ins a PPT:
    http://www.pptfaq.com/FAQ00548.htm
    Mais ca fait pas ce que je veut, donc a part si y a des connaisseurs qui s'aurait modifier ca.

    En fait ca ajoute une fonction à PPT qui permet d'ecrire ca:
    "Slide x of y"

    Bye

  4. #4
    Membre éclairé
    Avatar de marabout
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Août 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Août 2006
    Messages : 650
    Points : 852
    Points
    852
    Par défaut
    Voici un début de réponse:
    une petite macro en VBA qui va écrire le nombre total de slides dans le footer du master:
    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
    Sub Nbr_Page_In_Footer()
        Dim nrPagesname As String
        Dim curpage As String
        nrPagesname = ActivePresentation.Slides.Count()
        With ActivePresentation.SlideMaster.HeadersFooters
            If .Footer.Visible = False Then
                With .Footer
                    .Text = nrPagesname
                    .Visible = msoTrue
                End With
            Else
                With .Footer
                    .Text = ""
                    .Visible = msoFalse
                End With
            End If
        End With
        If ActivePresentation.HasTitleMaster Then
            With ActivePresentation.TitleMaster.HeadersFooters
                If .Footer.Visible = False Then
                    With .Footer
                        .Text = nrPagesname
                        .Visible = msoTrue
                    End With
                Else
                    With .Footer
                        .Text = ""
                        .Visible = msoFalse
                    End With
                End If
            End With
        End If
    End Sub
    Le problème, c'est que pour activer cette macro, j'ai dû créer un bouton qui l'active quand je clique dessus. Je cherche s'il existe une macro autoexecutable dans ppt

  5. #5
    Membre à l'essai
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut Un point rapide 10 ans plus tard
    10 ans plus tard, malgré de nouvelles versions de Microsoft Office (2007, 2013, 2016) et des mises à jour régulières, il n'est toujours pas possible d'afficher dynamiquement le nombre total de diapositives dans une présentation PowerPoint :-( Malgré cette lacune, nous utilisons toujours PowerPoint...

    C'est assez étonnant, car pour l'éditeur Microsoft, cela serait sans doute assez facile (comme il l'a fait dans Word). Dans la dernière version de PowerPoint 2016, la variable qui contient le nombre total de diapositives se nomme toujours ActivePresentation.Slides.Count.

    Je ne suis pas un spécialiste de VB. La macro proposée ci-dessous ne fonctionne plus telle quelle. Peut-être a-t-elle été actualisée ? Et avez-vous réussi à automatiser son exécution ? Car idéalement, il faudrait que ce nombre total de diapositives se mette à jour automatiquement dans le masque dès qu'une nouvelle diapositive est insérée.

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    La finalité de Powerpoint n'est pas celle de Word d'où une différence explicable.

    Je doute que le code ci-dessus ait pu fonctionner dans la mesure où les textes saisis dans les espaces réservés du masque n'apparaissent pas : ils servent juste à modéliser leur format.

    Je propose :
    • de juxtaposer une zone de texte dans le masque principal à droite du numéro de page en le plaçant et formatant de façon à ce que le contenu / N suive bien la numérotation.
    • noter le nom de cette zone de texte (j'obtiens TextBox 7 pour ma part)
    • créer les 2 modules comme décrits ici http://arkham46.developpez.com/artic...t/events/#LIII
    • créer une procédure dans le module de classe
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      Private Sub oApp_PresentationNewSlide(ByVal Sld As Slide)
         Call Nbr_Page_In_Footer
      End Sub
    • Créer une procédure dans l'autre module
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      Sub Nbr_Page_In_Footer()
      Dim nrPagesname As String
      nrPagesname = ActivePresentation.Slides.Count()
       ActivePresentation.SlideMaster.Shapes("TextBox 7").TextFrame.TextRange.Text = "/ " & nrPagesname
      End Sub
    • ne pas oublier d'activer la numérotation dans le pied
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut Une précision supplémentaire
    Merci à 78chris pour son excellente contribution. Cela avance

    Pour ceux qui, comme moi, utilisent la version française de PowerPoint 2016, la zone de texte s'appellera sans doute ZoneTexte au lieu de TextBox.
    Pour voir précisément le nom (avec son numéro) de la zone de texte ajoutée pour afficher le nombre de diapositives, allez dans :
    Outils de dessin, (Organiser), Volet Sélection
    afin d'afficher la liste des objets présents sur le masque de diapositives.

    Je vais essayer maintenant d'utiliser les événements, afin que cette macro soit exécutée automatiquement à chaque fois que l'on ajoute ou que l'on supprime une diapositive.

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    Mon Powerpoint Version 2010 est bien français mais il appelle la boîte Textbox...

    Quelle version as-tu ? (juste pour percer les mystères de Microsoft )
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    Membre à l'essai
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut Noms des objets
    J'utilise la version 2016 de PowerPoint (Office 365). A noter que sur certaines diapositives, la plupart des objets ont des noms en français, mais quelques-uns ont des noms en anglais, suivis éventuellement d'un même numéro. Exemples : "ZoneTexte 11" versus "TextBox 11" ; "Image 8" versus "Picture 8". Il est probable que la présentation que j'utilise ait été créée il a plusieurs années avec une ancienne version de PowerPoint.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut Evénements PowerPoint
    Je crois qu'il n'y a finalement pas moyen d'automatiser l'exécution de cette macro pour mettre à jour le nombre total de diapositives, car s'il y a bien un événement lorsqu'on ajoute une diapositive (PresentationNewSlide), il n'y en a pas lorsqu'on en supprime une... Je vais peut-être essayer de lancer l'exécution de cette macro lors de l'enregistrement de la présentation (événement PresentationSave).

  11. #11
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai pas de code sous la main, mais si tu faisais juste une macro qui ajoute/enlève une diapositive et qui mettrait l'affichage à jour ? Ensuite tu l'assignais à un bouton du ruban ou de la barre d'outils Accès rapide et tu aurais juste à prendre l'habitude d'utiliser le bouton au lieu des méthodes habituelles...
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  12. #12
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    Au lieu de Private Sub oApp_PresentationNewSlide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub oApp_SlideSelectionChanged(ByVal SldRange As SlideRange)
        If nrPagesname2 <> ActivePresentation.Slides.Count() Then Call Nbr_Page_In_Footer
    End Sub
    et modifie la sub ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public nrPagesname2
    Sub Nbr_Page_In_Footer()
        Dim nrPagesname As String
        nrPagesname = ActivePresentation.Slides.Count()
        ActivePresentation.SlideMaster.Shapes("TextBox 7").TextFrame.TextRange.Text = "/ " & nrPagesname
        nrPagesname2 = nrPagesname
    End Sub
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  13. #13
    Membre à l'essai
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut ça fonctionne plutôt bien !
    @ Chris

    Bien joué, c'est très malin ces 3 lignes de codes supplémentaires (N.B. Déclarer la variable Public nrPagesname2 en haut du module ModEvents).


    @ Clément

    C'est une bonne idée le bouton dans le ruban : pas besoin de code : j'ai fait "Personnaliser le ruban", Choisir... Macros puis AttachEvents que j'ai ajouté dans un Nouveau groupe et que j'ai renommé en "Gestionnaire d'événements". Le plus dur est de choisir le symbole adéquat : j'ai choisi les 3 petits fanions ;-)

    Car si l'on ajoute un bouton dans une diapositive comme le conseille Thierry G. à la fin de son article très bien "Gérer les événements dans PowerPoint en VBA", il faut alors passer la présentation en mode Diaporama pour que ce bouton soit actif, ce qui n'est pas pratique dans notre cas (mode Normal d'édition de la présentation pour insérer ou supprimer des diapos).

  14. #14
    Futur Membre du Club
    Homme Profil pro
    amateur VBA
    Inscrit en
    Février 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : amateur VBA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2021
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Quleques années plus tard
    Bonjour à la communauté.

    J’apporte à mon tour une pierre à l’édifice. J’ai l’impression qu’il n’est pas trop tard…

    Personnellement et contrairement à tbiard dans son post du… 11 avril 2017, je préfère avoir la macro qui va indiquer le nombre total de diapos dans une présentation différente de celle qui accueillera cette information car ainsi cette dernière aura une extension pptx et non pas pptm (question de risque de blocage de la présentation lors d’envoi par messagerie pour des raisons de sécurité).

    La solution que je propose a les caractéristiques suivantes :
    -figure dans une présentation à part
    -nécessite d’être lancée pour mettre à jour le nombre total
    -utilise la zone de pagination dénommée « Espace réservé du numéro de diapositive » dans le pied de page, prévue par Microsoft, sans rajouter de zone de texte. De façon générale, il me semble que l’utilisation des différentes zones de textes particulières de l’objet HeaderFooter est assez méconnue, même lors de l’utilisation de Powerpoint sans VBA (Insertion > En-tête/pied, onglet Diapositive).

    Donc soit une présentation dénommée preNum (dans le code) qui recevra en pied de page l’information souhaitée et la présentation preMac qui contient la macro.

    Le cœur de la solution (tout le reste ne sert "qu'à faire fonctionner la macro de façon autonome) consiste à utiliser les méthodes
    -AddPlaceHolder à l’objet Shapes, voir
    https://docs.microsoft.com/fr-fr/off...addplaceholder. Noter les 6 valeurs différentes du type de donnée PpPlaceholderType (https://docs.microsoft.com/fr-fr/off...laceholdertype). Cette méthode ne fonctionne qu’à partir de Powerpoint 2013 ;

    -InsertAfter à TextFrame.TextRange.de la zone de pagination, voir
    https://docs.microsoft.com/fr-fr/off...ge.Insertafter.

    Voir le code ci-dessous à copier/coller dans une présentation alors que la présentation à paginer sera ouverte. Noter que pour distinguer les 2 présentations, celle à numéroter et celle avec la macro, il est nécessaire de mettre « Numérotation diaporama » en pied de page de cette dernière (voir code ligne 25).
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Option Explicit
    Sub NumeroterDiapos()                               'numérotation des diapos
    'D'origine, Powerpoint attribue dans le masque et les dispositions "Espace
    'réservé du numéro de diapositive 5", 5 n° d'ordre pouvant varier si la zone
    'est effacée puis recréée
    Dim preMac As Presentation                      'présentation avec macros
    Dim preNum As Presentation                      'présentation à numéroter
     
    Dim i As Integer, j As Integer
    Dim shaFormCour As Shape                        'forme courante
    'Dim strLook As String                          'look de la pagination N / M
    Dim PrePresCour As Presentation                 'présentation courante
     
    'conversion point/centimètre
     Const ConvPoinCm As Single = 0.0352778
    '================Distinction entre les 2 présentations ouvertes================
     
    If Application.Presentations.Count = 2 Then
        'PrePresCour.Slides(1).HeadersFooters.Footer.Visible = T signifie que la
        'case Insertion > En-tête/pied > Pied de page est cochée. Si elle ne l'est
        'pas, accéder au pied de page renvoie une erreur --> nécessité de tester
        'cette case avant de tester la valeur du texte du pied de page
        If Presentations(1).Slides(1).HeadersFooters.Footer.Visible Then
            'tester en 2 étapes, sinon erreur !
            If Presentations(1).Slides(1).HeadersFooters.Footer.Text = "Numérotation diaporama" Then
                Set preMac = Presentations(1)
                Set preNum = Presentations(2)
            Else
                Set preNum = Presentations(1)
                Set preMac = Presentations(2)
            End If
        Else
            Set preNum = Presentations(1)
            Set preMac = Presentations(2)
        End If
    Else
        MsgBox "Le présent diaporama ne fonctionne qu'avec un seul autre diaporama ouvert." & _
        vbCrLf & "C'est ce dernier qui sera examiné.", vbInformation
        Exit Sub
    End If
     
    '==effacement dans chaque MASQUE de la zone de pagination d'origine si existe==
    For i = 1 To preNum.Designs.Count
        For Each shaFormCour In preNum.Designs(i).SlideMaster.Shapes
            'si forme courante est un "espace réservé" (msoPlaceholder, valeur numérique 14)
            'si forme courante est un "espace réservé" de type n° de diapo (ppPlaceholderSlideNumber, valeur numérique 13)
            'MicroSoft attribue à cet espace recevant le n° de diapo dans le masque
            'l'appellation "Slide Number Placeholder" dans le code VBA
            'ou "Espace réservé du numéro de diapositive N" dans Powerpoint
            If shaFormCour.Type = msoPlaceholder Then
                If shaFormCour.PlaceholderFormat.Type = ppPlaceholderSlideNumber Then
                    shaFormCour.Delete
                End If
            End If
        Next shaFormCour
    Next i
     
    '==========effacement dans chaque DISPOSITION de la zone de pagination=========
    For i = 1 To preNum.Designs.Count
        For j = 1 To preNum.Designs(i).SlideMaster.CustomLayouts.Count
            For Each shaFormCour In preNum.Designs(i).SlideMaster.CustomLayouts(j).Shapes
                If shaFormCour.Type = msoPlaceholder Then
                    If shaFormCour.PlaceholderFormat.Type = ppPlaceholderSlideNumber Then
                        shaFormCour.Delete
                    Exit For
                    End If
                End If
            Next shaFormCour
        Next j
    Next i
     
    '(re)création dans chaque MASQUE de la zone réservée de pagination avec le nombre total de diapo
    For i = 1 To preNum.Designs.Count
        'La méthode Shapes.AddPlaceholder ne fonctionne pas sous PWP 2007
        preNum.Designs(i).SlideMaster.Shapes.AddPlaceholder(ppPlaceholderSlideNumber, _
        Round(0.06 / ConvPoinCm, 2), _
        preNum.PageSetup.SlideHeight - Round(1 / ConvPoinCm, 2), _
        Round(1.7 / ConvPoinCm, 2), _
        Round(1 / ConvPoinCm, 2)).Name = "Slide Number Placeholder 0"
        With preNum.Designs(i).SlideMaster.Shapes("Slide Number Placeholder 0").TextFrame
            .TextRange.InsertAfter (" / " & CStr(preNum.Slides.Count))
            .MarginLeft = Round(0.1 / ConvPoinCm, 2)
            .MarginRight = Round(0.1 / ConvPoinCm, 2)
            .MarginBottom = Round(0.1 / ConvPoinCm, 2)
            .MarginTop = Round(0.1 / ConvPoinCm, 2)
            .TextRange.Font.Size = 12
            .TextRange.Font.Name = "Arial"
            .TextRange.ParagraphFormat.Alignment = ppAlignRight
        End With
    Next i
     
    '(re)création dans chaque DISPOSITION de la zone de pagination avec le nombre total de diapo
    For i = 1 To preNum.Designs.Count
        For j = 1 To preNum.Designs(i).SlideMaster.CustomLayouts.Count
            preNum.Designs(i).SlideMaster.CustomLayouts(j).Shapes.AddPlaceholder(ppPlaceholderSlideNumber, _
            0, preNum.PageSetup.SlideHeight - Round(1 / ConvPoinCm, 2), _
            Round(1.7 / ConvPoinCm, 2), _
            Round(1 / ConvPoinCm, 2)).Name = "Slide Number Placeholder 0"
            With preNum.Designs(i).SlideMaster.CustomLayouts(j).Shapes("Slide Number PlaceHolder 0").TextFrame
                .TextRange.InsertAfter (" / " & CStr(preNum.Slides.Count))
                .MarginLeft = Round(0.1 / ConvPoinCm, 2)
                .MarginRight = Round(0.1 / ConvPoinCm, 2)
                .MarginBottom = Round(0.1 / ConvPoinCm, 2)
                .MarginTop = Round(0.1 / ConvPoinCm, 2)
                .TextRange.Font.Size = 12
                .TextRange.Font.Name = "Arial"
                .TextRange.ParagraphFormat.Alignment = ppAlignRight
            End With
        Next j
    Next i
     
    'homogénéisation et prise en compte du n° de page
    For i = 1 To preNum.Slides.Count
        If preNum.Slides(i).HeadersFooters.SlideNumber.Visible = False Then _
        preNum.Slides(i).HeadersFooters.SlideNumber.Visible = True
    Next i
     
    MsgBox "Terminé." & vbCrLf & preNum.Name & " contient " & _
    preNum.Slides.Count & " diapositives.", vbInformation
    End Sub
    J'espère que ça pourra encore, de nos jours, être utile !
    P.S. le code n’est associé à aucun évènement du diaporama. Autrement dit, il faut relance la macro lorsque le nombre de pages est stabilisé. Mais c’est toujours pour la même raison : ne pas avoir de macro dans le fichier à présenter car l’extension devient pptm ce qui peut poser des problèmes de sécurité.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 15
    Points : 7
    Points
    7
    Par défaut trop vrai
    tbiard : j'adore ta précision
    10 ans plus tard, malgré de nouvelles versions de Microsoft Office (2007, 2013, 2016) et des mises à jour régulières, il n'est toujours pas possible d'afficher dynamiquement le nombre total de diapositives dans une présentation PowerPoint
    C'est la honte quand même, ils sont gonflés chez Microsoft ... une telle lacune signalée par les utilisateurs et répertoriée depuis tout ce temps et pas encore réparée ! ( on est en 2023 )

    lol

  16. #16
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Oui mais
    bonsoir à toutes et tous,

    allez, j'ajoute 11 mois de plus à la discussion.
    Je suis de passage et oui moi aussi j'aurais aimé cette fonctionnalité.

    Tout en y réfléchissant, le problème n'est pas informatique mais humain.

    La question :
    Comment va être votre publique volontaire ou non lorsqu'il va voir en début de présentation une indication du genre 1/56 ?
    ou alors
    au bout d'une demi-heure, de constater que l'on n'est qu'à la diapositive 20/56.

    Je pense à "56 diapositives de perte de temps, il y en a (encore) pour...".

    Alors rien de tel qu'un simple numéro pour pouvoir retrouver rapidement la diapositive et ne pas bloquer, frustrer l'auditoire.

    Même si c'est possible en VBA, il faut l'éviter.

    ESVBA

Discussions similaires

  1. [Débutant][Math] Afficher un nombre sans exposant
    Par tanguy dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 24/09/2012, 13h58
  2. Réponses: 8
    Dernier message: 18/04/2011, 14h46
  3. [C#] Afficher un nombre conséquent de données.
    Par Joad dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/04/2005, 15h38
  4. Réponses: 4
    Dernier message: 29/05/2004, 14h29
  5. [JSP][TOMCAT] Afficher le nombre de sessions en cours
    Par kitov dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 24/05/2004, 13h48

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