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 :

Génération automatique d'index en VBA


Sujet :

VBA PowerPoint

  1. #1
    Nouveau Candidat au Club
    Génération automatique d'index en VBA
    Bonjour,

    Je souhaite utiliser VBA pour générer automatiquement un index dans PowerPoint. Malheureusement ce défi dépasse largement mes compétences, peut-être l'un de vous saura-t-il le relever ?

    En pratique :
    Ma dernière page powerpoint contient dans la zone de texte principale une liste de mots-clefs
    Sur chaque ligne, il y a des mots-clefs équivalents (à indexer ensemble), séparés par une virgule

    Par exemple :
    • Pomme,golden,royal gala,granny smith
    • Poire,conférence,comice,williams
    Mon souhait est que la macro cherche, dans l'ensemble de la présentation, dans toutes les zones qui contiennent du texte, les occurences des mots-clefs listés (insensible à la casse), et me génère une page d'index en fin de présentation, dans laquelle en face de chaque tête de série de mots clefs j'ai la liste des pages qui contiennent un ou plusieurs des mots-clefs équivalents de cette ligne, avec à chaque fois un lien vers la page associée.

    Par exemple, si la page 3 contient "I LOVE GRANNY SMITH AND AUNTY JOHNSON", et la page 14 contient "une conférence sur la pomme", on aurait :

    • Pomme: 3, 14
    • Poire: 14
    Un immense merci pour votre aide !

  2. #2
    Nouveau membre du Club
    Bonjour

    En gros, il faut que tu prennes chaque slide, les unes après les autres.

    Pour chaque shape présente, tu peux lire son contenu (j'ai pris comme exemple une zone de texte) dont tu peux lire le texte par

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
               ActiveWindow.Selection.SlideRange.Shapes(k).Select
               Debug.Print ActiveWindow.Selection.TextRange.Text


    Pour sélectionner la forme, tu peux utiliser la fonction Type (celui d'une zone de texte est 17) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
        Debug.Print ActiveWindow.Selection.SlideRange.Shapes(1).Type


    Tu peux comparer le contenu avec ta valeur Index et si c'est la même info, tu retiendras le n° de la slide.