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 :

Identifier des slides


Sujet :

VBA PowerPoint

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Identifier des slides
    Bonjour à tous,
    J'ai tout d'abord fait le tour des autres discussions et je n'ai pas trouvé la réponse à mes questions.
    Voici le sujet : j'ai un PowerPoint d'une trentaine de slides. Certaines slides ne sont pas applicables à tous les cas de figure. À l'ouverture du PowerPoint l'utilisateur est invité à répondre à plusieurs questions par Oui ou par Non. Lorsque la réponse est oui (exemple question 1 se réfère à la slide 12) alors il faut conserver la slide, si la réponse est non alors il faut la supprimer.

    J'ai codé toutes les routines et toutes les questions en utilisant le numéro de la slide. Petit problème qui m'est apparu à la fin : si je supprime la slide 12, la slide 13 devient la slide 12 et cela vient casser mon code.
    Existe t il un moyen de pouvoir identifier au préalable (à l'ouverture de la macro) chaque slide concernée d'une manière unique ?

    NB : l'utilisateur va travailler sur la présentation, l'option de masquer les slides n'est pas envisageable cela créerait trop de confusion.

    Par avance merci beaucoup pour votre aide.
    Bonne journée,
    Gauthier

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ce que tu peux faire c'est donner un nom à chaque slide et donc les appeler par leurs noms :

    Exemple :

    Je crées un Powerpoint avec 4 slides et je lance cette routine que je mets dans un module :

    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
    Public Sub t()
     
     
        Dim objSlide As PowerPoint.Slide
        Dim i As Integer
     
        i = 1
     
        For Each objSlide In ActivePresentation.Slides
            objSlide.Name = "Page" & i
            i = i + 1
        Next objSlide
     
     
     
    End Sub
    Cela va donner un nom à chaque slide : Page1, Page2, Page3 et Page4

    Si je supprime la deuxième, (donc Page2) et que je lance la routine suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub tt()
     
        Dim objSlide As PowerPoint.Slide
     
        For Each objSlide In ActivePresentation.Slides
           MsgBox objSlide.Name
        Next objSlide
     
    End Sub
    Je n'aurais plus que Page1, Page3 et Page4

    Donc pour t'expliquer qu'il faut donner un nom à tes slides et les appeler par ce nom qui sera toujours valable, et donc modifier ton code en conséquence.

    Philippe

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour Philippe,

    tout d'abord merci beaucoup pour votre message.
    J'ai intégré le premier code à ma macro. Cependant, elle ce que cela va s'appliquer à tous les User Forms qui vont suivre ? (une dizaine).

    En effet, je n'arrive pas à trouver la formule adéquat.

    La formule précédente était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub PasFraudes_Click()
     
    Unload Me
        ActivePresentation.Slides(12).Delete
        Question4.Show
     
    End Sub
    Je ne sais pas par quoi remplacer la partie ActivePresentation.Slides(12).Delete
    ActivePresentation.Page10.Delete ne fonctionne pas tout comme ActivePresentation.Slides(Page10).Delete.

    Pourriez-vous m'aiguiller s'il vous plaît ?
    Par avance merci beaucoup,
    GAuthier.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    C'est tout bon, il suffisait de mettre Slides("PageXX").Delete... sacrés guillemets...

    Merci beaucoup !!

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Routine
    Bonjour,

    je reviens vers vous car j'ai fait recetté la macro à un autre utilisateur afin de vérifier son fonctionnement.
    Il a eu le message d'erreur suivant :

    Nom : Captureb.PNG
Affichages : 938
Taille : 6,2 Ko

    En gros, une autre slide a déjà ce nom. Du coup j'ai l'impression qu'on ne peut faire tourner cette macro qu'une seule fois. Or son but est d'être mise en ligne puis utilisée par une centaine de personnes...

    Pourriez-vous m'aider à trouver soit une manière de lancer la routine différemment ? (j'ai déjà testé en ne mettant pas "ActivePresentation" mais directement Presentations("Nom du diapo.pptm") ça ne fonctionne pas).
    Soit, si cela est possible, de commencer la routine par un code qui permet de supprimer le nom des slides qui commencent par "Page"+i ?

    Par avance merci beaucoup pour votre précieuse aide.
    Bonne fin de journée.

  6. #6
    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,

    Citation Envoyé par Ginipio Voir le message
    Bonjour,

    Or son but est d'être mise en ligne puis utilisée par une centaine de personnes...
    Gros problème là. Un macro PowerPoint ne peut être utilisée que dans sa propre présentation/son propre modèle sauf pour un complément/une macro complémentaire

    Pourriez-vous m'aider à trouver soit une manière de lancer la routine différemment ? Soit, si cela est possible, de commencer la routine par un code qui permet de supprimer le nom des slides qui commencent par "Page"+i ?
    Personnellement, sans avoir testé, je dirais de te faire un modèle avec toutes tes diapositives, et de te faire une nouvelle présentation avec juste les diapositives dont tu as besoin.
    À 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.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    la macro sera à télécharger par chaque utilisateur et utilisée sur le dur du PC pas directement en ligne.
    Pour moi cela ne devrait pas poser de problème, j'avais envoyé un premier jet à un utilisateur et ça avait fonctionné (mais c'était avant de nommer les slides).

    Pour ce qui est de faire deux jeux de diapositives, c'est impossible, il y a 9 questions en tout et donc potentiellement 9 slides en moins (ou 8, ou 7, etc.)

    Je pense qu'il y a possibilité de remettre à zéro à chaque fois le nom des slides mais je ne sais pas comment...

    Merci à vous,
    Bonne journée.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Petite idée
    Bonjour à tous,

    j'ai réfléchi à une parade : si je demande à l'utilisateur d'entrer par exemple le nom de son client et que j'indique dans ma macro le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     For Each objSlide In ActivePresentation.Slides
            objSlide.Name = "Réponseutilisateur" & i
            i = i + 1
    Next objslide
    Est-ce que vous pensez que cela peut fonctionner ?
    Comment puis-je coder l'UserForm pour pouvoir utiliser la réponse de l'utilisateur ? Est-ce un integer ?

    Merci beaucoup pour votre aide,
    bonne journée.

Discussions similaires

  1. Identifier des lignes d'un fichier texte à des varaibles
    Par lohot dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/02/2008, 18h39
  2. Identifier des objet distant en RMI
    Par Dryss51 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 19/02/2008, 00h23
  3. identifier des doublons sur une clé composé
    Par laurentci dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2008, 12h09
  4. Alimenter des slides avec des données d'Access
    Par kimmy dans le forum Powerpoint
    Réponses: 1
    Dernier message: 26/06/2007, 10h44

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