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 :

Faire une macro qui permettrait de lancer un diaporama qui selectionne uniquement certaines diapos


Sujet :

VBA PowerPoint

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Faire une macro qui permettrait de lancer un diaporama qui selectionne uniquement certaines diapos
    Bonjour,
    et merci pour ce site fort utile.
    Depuis quelques temps je voudrais améliorer ma lecture des différents ppt.
    Initialement j'ai 3 fichiers ppt avec des slides identiques comme la 1 ou 10 par exemple.
    Le premier fichier doit montrer les slides 1,2,3,4,7,8,9,10
    Le deuxieme fichier doit montrer les slides 1,10,11,12,13
    Le troisième diaporama doit montrer les slides 1,2,3,4,5,6,9,10,11

    Ce que je voulais faire, c'est réunir tous les slides sur un même fichier Powerpoint et faire une macro au début de mon ppt qui lancerait le diaporama 1,2,3,4,7,8,9,10 puis une autre macro qui lancerait le diaporama sur les slides 1,10,11,12,13 et une troisième macro qui lancerait en format diaporama les slides 1,2,3,4,5,6,9,10,11

    J'ai bien essayé avec 3 boutons commandes et des liens mais sans succés.
    Merci d'avance pour votre aide.
    Stéphane

  2. #2
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 21
    Points : 13
    Points
    13
    Par défaut personne pour m'aider?
    vu que je n'ai toujours pas trouvé de solution, je suis preneur de toute forme d'aide.
    Merci d'avance
    stéphane

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Consultant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 8
    Points
    8
    Par défaut une piste
    Bonjour,

    Je suis moi même à la recherche d'une macro permettant de faire exactement la même chose.
    j'ai trouvé des indices sur un site anglais, mais j'ai du mal a comprendre comment l'appliquer et quels éléments remplacer dans le code.
    peux être que quelqu'un ici pourra nous éclairer ?


    la procédure trouvée en ligne : https://groups.google.com/forum/#!to...nt/u69XHLPobmI

    Place a named "Marker" on each slide.
    Then Show/Hide depending if the marker is on a slide.
    You can change the slides continuously and keep the versions upto date without worrying about changing page numbers.

    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
    Private Sub Button_Engineering_Click()
    Dim Show_Slide As Boolean
    Dim oSl As Slide
    Dim oSh As Shape
     
    Show_Slide = False
    For Each oSl In ActivePresentation.Slides
    For Each oSh In oSl.Shapes
    If oSh.Name = "Engineers" Then Show_Slide = True
    Next
    If Show_Slide = True Then oSl.SlideShowTransition.Hidden = False
    If Show_Slide = False Then oSl.SlideShowTransition.Hidden = True
    Show_Slide = False
     
    Next
    End Sub
    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
    Private Sub Button_Mgmt_Click()
    Dim Show_Slide As Boolean
    Dim oSl As Slide
    Dim oSh As Shape
     
    Show_Slide = False
    For Each oSl In ActivePresentation.Slides
    For Each oSh In oSl.Shapes
    If oSh.Name = "Mgmt" Then Show_Slide = True
    Next
    If Show_Slide = True Then oSl.SlideShowTransition.Hidden = False
    If Show_Slide = False Then oSl.SlideShowTransition.Hidden = True
    Show_Slide = False
     
    Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Button_Show_All_Click()
    Dim oSl As Slide
    Dim oSh As Shape
    For Each oSl In ActivePresentation.Slides
    For Each oSh In oSl.Shapes
    oSl.SlideShowTransition.Hidden = False
    Next
    Next
    End Sub

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Consultant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Help !
    Bonjour à tous,

    Quelqu'un aurait-t-il une réponse pour nous s'il vous plait ?
    il s'agit surtout de m'aider à décrypter la macro précédemment citée afin de comprendre quoi changer pour l'adapter dans mon fichier...

    Merci beaucoup par avance !
    Marion

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 413
    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 413
    Points : 16 255
    Points
    16 255
    Par défaut
    Bonjour

    Pourquoi utiliser VBA pour réinventer l'eau tiède ?

    Ce qui est décrit dans le premier post se fait tout naturellement en définissant 3 diaporamas personnalisés au sein d'un même fichier ppt.

    Lors des projections, on lance au choix l'un des 3...
    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é...

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Consultant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Diaporama personnalisé
    Bonjour et merci pour ta réponse,

    Ta solution ne convient malheureusement pas : Je ne veux pas juste un diaporama personnalisé.
    J'ai notamment besoin de :
    - masquer les slides en affichage 'Normal' pour simplifier les modifications de contenus sur un seul type de présentation
    - imprimer seulement la 'sous présentation' qui m’intéresse
    - ajouter et supprimer simplement un slide à une présentation (la visualisation des slides faisant partie ou non d'un diaporama personnalisé est... comment dire... dégueulasse pour une présentation réduite, sans parler d'une présentation de 200 slides ?)

    Pour simplifier au maximum les choses, j'aurai donc besoin de pouvoir ajouter une forme sur les diapo (par exemple un picto 'expert') pour identifier simplement à quelle présentation elle appartient, et que la simple présence de ce picto permettre d'ajouter le slide à la présentation 'Expert'.

    Pour atteindre cet objectif, je ne pense pas qu'autre chose qu'une macro puisse m'être utile...?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Consultant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 8
    Points
    8
    Par défaut la solution
    Bon, après m'être fait aider en 'real life', je soumets ici la solution concernant ce code VBA envoyé précédemment :

    Il faut simplement :
    - créer deux formes dans ppt, et faire correspondre leur nom à ceux utilisés dans la macro (dans l'exemple : Engineers et Mgmt). Attention : la casse est prise en compte dans la macro. (pour changer le nom d'une forme : sélection / format / volet sélection)
    - coller dans les slides la forme correspondante (selon si on veut qu'elle soit visible par Mgmt ou Engineers ou les deux)
    - affecter les deux macros, + la macro qui permet d'afficher toutes les slides, à trois boutons différents dans la présentation

    Il est possible de remplacer les noms 'engineers' et 'mgmt' par d'autres noms dans la macro, il suffit de faire en sorte que les formes ensuite utilisées sur les diapo aient des noms qui correspondent.

    Il est également possible d'ajouter une macro pour rajouter une 'sous présentation', il suffit de prendre le bout de code ci dessous, de changer le nom de la macro et de remplacer "Mgmt" par le nom souhaité.

    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
    Private Sub Button_Mgmt_Click()
    Dim Show_Slide As Boolean
    Dim oSl As Slide
    Dim oSh As Shape
     
    Show_Slide = False
    For Each oSl In ActivePresentation.Slides
    For Each oSh In oSl.Shapes
    If oSh.Name = "Mgmt" Then Show_Slide = True
    Next
    If Show_Slide = True Then oSl.SlideShowTransition.Hidden = False
    If Show_Slide = False Then oSl.SlideShowTransition.Hidden = True
    Show_Slide = False
     
    Next
    End Sub

    Voila, j'espère que c'est clair, et que cela pourra aider d'autres personnes !
    Marion

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 413
    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 413
    Points : 16 255
    Points
    16 255
    Par défaut
    Bonjour

    A noter que :
    • L'impression d'un diaporama personnalisé est prévue.
    • Sauf erreur de ma part, en affichage normal les diapos masquées sont visibles, seul le mode lecture, en plus de la projection, permet d'escamoter les diapos masquées.
    • L'avantage des diaporamas personnalisés est que l'ordre de passage des diapos est indépendant de l'ordre réel (nous utilisons pas mal cette possibilité) et n'oblige pas à surcharger les diapos avec des formes.
    • En revanche l'interface gagnerait effectivement à être améliorée, au moins la possibilité de resizer la fenêtre.


    Concernant les formes que vous ajoutez pour le code je conseillerais de prévoir des masques avec l'une ou l'autre ou les 2 formes (au moins pour les dispositions les plus utilisées dans la présentation).
    Ainsi l'application de la disposition adéquate sur un ensemble de diapos peut être plus simple que le copier/coller

    Utiliser alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each oSh In oSl.CustomLayout.Shapes
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each oSh In oSl.Shapes
    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
    Futur Membre du Club
    Femme Profil pro
    Consultant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Excellent
    Merci beaucoup Chris,

    Je comptais en effet utiliser les formes directement dans le masque, votre suggestion est donc un gros plus !

    Sinon concernant l'affichage des slides 'masqués', quelques précisions :
    - ils s'affichent en effet, mais ils sont légèrement grisés dans la colonne d'affichage sur la gauche, et le numéro du slide (toujours dans la colonne de gauche) est entouré afin qu'on les différencies rapidement. c'est utile pour faire des modifications dans une présentation en prenant en compte les éventuelles données présentes sur les slides masqués.
    - en mode présentation les slides masqués ne seront bien entendu pas affichés

    Merci encore !
    M

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/10/2011, 13h34
  2. Appeler un fichier XL déjà ouvert pour faire une macro
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 12h33
  3. faire une macro pour un sous formulaire
    Par db48752b dans le forum Access
    Réponses: 2
    Dernier message: 18/09/2006, 23h14

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