Creer ppt via VBA

Bonjour,

J'ai besoin d'actualiser une grosse quantité de présentation PPT (250). Le problème, c'est que il me faut créer totalement la slide via un template bien précis et déja créer. J'en suis actuellement la :

Sub UPDATE_PPT()

'déclaration des variables

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.Worksheet

Dim shpTexte As Shape

'

' PPT Macro

' ACTU PPT + NOM + GRAPH FUTUR

'

' Touche de raccourci du clavier: Ctrl+Shift+P

'

' On déclare une variable de type Application PowerPoint

Dim ppt As PowerPoint.Application

Dim Diapo1 As PowerPoint.slide

Set ppt = CreateObject("PowerPoint.Application")

ppt.Visible = True '

' On crée maintenant un objet Presentation

Dim Pres As PowerPoint.Presentation

' Et on lui dit de quelle présentation il s'agit :

Set Pres = ppt.Presentations.Open(Filename:="CHEMIN DU DOSSIER")

End Sub

Voila, mtn je bloque, j'aimerais qu'il :

  • aille chercher une cellule dans excel, (exemple : B4)
  • qu'il copie colle le contenu de celle-ci,
  • qu'il aille chercher dans la slide du PPT le mot JEAN (par exemple)
  • qu'il le remplace par le contenu de la cellule excel copier coller juste avant.

Si quelqu'un m'apporte la solution, son poids en air lui sera délivré !

Bonne soirée

bonjour,

une proposition

Sub aargh()
    Dim sh As Object, ppt As Object
    Dim pres As Object, dia As Object, s As Object
    Dim fichierpres$, motinitial$, motfinal$

    Set ppt = CreateObject("powerpoint.application") 'application powerpoint
    Set sh = ThisWorkbook.Sheets("sheet1")    'feuille excel à adapter
    fichierpres = "d:\downloads\modèle de présentation.pptx"    'nom fichier présentation à adapter
    Set pres = ppt.presentations.Open(fichierpres)    'ouverture de la présentation
    motinitial = "jean" 'mot à remplacer
    motfinal = sh.Range("B4") 'mot de remplacement
    For Each dia In pres.slides 'on parcourt tous les slides
        For Each s In dia.Shapes 'on examine toutes les formes sur le slide
            If s.HasTextFrame Then 'la forme contient-elle du texte ?
                With s.TextFrame
                    If .HasText Then
                        .TextRange.Text = Replace(.TextRange.Text, motinitial, motfinal) 'on remplace le texte
                    End If
                End With
            End If
        Next s
    Next
    pres.Save
    pres.Close
    ppt.Quit
End Sub

Bonjour h2so4,

Alors déjà merci, ensuite pour la macro, tout marche bien ! Mais elle ne change pas le mot "jean" par la cellule "B4"

Je pense qu'il faudrait d'abord lui dire d'ouvrir le classeur,

j'ai pensé a duplique ton code du style :

fichierexcel = "V: etc ....."

workbooks.open fichierexcel

Mais après avoir essayer, ca ne change strictement rien, à part le fait qu'il ouvre excel.

Donc pour résumer après l'avoir tester en ligne par ligne via F8:

  • il ouvre bien excel,
  • il check bien les shapes de la slide
  • il ne change pas "jean" mais je pense qu'il le trouve...

Je suis pas un pro dans VBA, donc la solution du problème m'échappe !

Soit :

1) il ne trouve pas la feuille, je devrais donc lui déclarer qu'il doit chercher dans la feuille excel active (activesheet ...)

2) Il trouve la feuille, mais ne change pas car il veut m'emmerder !

Encore merci et bon vendredi !

Bonjour, salut h2so4,

Le code VBA proposé est à placer et à exécuter depuis le classeur Excel dans lequel se trouves le fameux "B4".

Tu peux le voir dans cet extrait :

Set sh = ThisWorkbook.Sheets("sheet1")

sh représentant l'onglet appelé "sheet1" dans le classeur dans lequel se trouve le code VBA.

Bonjour,

comme tu ne nous as mis aucun fichier exemple de ce que tu veux, je t'ai donné une solution sur base des infos que tu as bien voulu nous donner.

tu nous parles d'un fichier présentation qu'il faut ouvrir, tu nous parles d'un mot à aller chercher en B4 dans la feuille d'un classeur (j'ai fait la supposition qu'il s'agissait du classeur dans lequel se trouve la macro et j'ai appelé cette feuille sheet1), et utiliser ce mot pour remplacer toutes les occurrences de "jean" dans la présentation.

C'est ce que fait la macro que j'ai proposée. Si tu veux autre chose, à toi de l'adapter, je t'ai mis de commentaires là où je pense que tu dois faire des adaptations ou tu précises ce que tu veux en nous mettant des fichiers exemples.

Bonjour Pedro,

Justement, je l'ai bien placé :

Mon chemin :

- Ouverture de mon Excel + ALT F11 => Nouveau module => Copier coller de la nouvelle macro, lancement en automatique puis ligne par ligne

Mais ça n'a pas marché (je remets pas en cause le code ci dessus qui fait surement ce pourquoi il a été conçu, je remets en cause mon manque de connaissance qui fait que j'arrive pas spécialement a lire à travers les lignes)

Donc pour l'instant, ça n'impact pas la shape de mon PPT qui contient "xxx"

Compliqué de mettre un fichier exemple, il faudrait que je change toute la chartre du PPT pour ne pas identifier l'entreprise (vous feriez vite le lien avec l'objet final sinon) et enlever l'intégralité des données de l'excel. Les données sont trés sensibles ...

Je vais te résumer en donnant le plus de détails possible :

Ca concerne des fonds d'investissements, l'idée est la suivante :

Dans excel, je vais ajouter le nom du fond et les détails qui lui sont associés, jusque la rien de bien compliqué

Dans un second temps, la macro va intervenir, pour aller chercher des données historiques dans un logiciel financier puis mettre l'excel a jour via une msgbox sur la plage de temps voulu, la aussi tout va bien

Et pour finir, une autre macro, disons la macro "relou" va elle, prendre les données de l'excel, les transférer dans mon PPT. La partie transfert de graphique marche, car elle n'a rien a remplacé, elle les positionne et c'est fini. Mais quand il s'agit de trouver la shape "NOM DU FONDS" et de la renommer par la fameuse cellule B4, la elle veut plus rien savoir ...

Je sais pas si je suis clair

Bon, quand j'enlève la commande qui va chercher le cellule en b4, et que je lance, ça marche !

J'ai :

motinitial = "JEAN"

motfinal = "CA MARCHE !"

Résultat : Le mot final est bien inscrit dans la shape

Du coup, c'est forcément mon excel qui merde, je vais plancher sur le sujet

Encore merci pour ton aide !

Je clôture par le sujet encore en résolu, dans le doute ou je n'y arrive pas.

Bonjour,

la macro ne renomme pas une shape dont le nom est "jean", la macro remplace "jean" dans le contenu d'une shape, car ce n'est pas ce que j'ai compris.

Quant à ton "ça va être difficile", c'est à toi de voir.

moi cela m'a pris 3 secondes pour faire un classeur avec "coucou" en B4 et 10 secondes pour faire une présentation qui contient "Jean" dans un shape sur un slide, pour tester la macro que je t'ai proposée.

132modify-ppt.xlsm (15.17 Ko)

Bon, après y avoir passer la matinée, elle fonctionne, étrangement il ne reconnait pas certain mot à partir du moment ou il y a plus de 2 espace ... Allez savoir pq !

J'ai un autre soucis, mais surement que vous aurez vite vu de trouver la solution,

J'aimerais dans le même style que la dernière macro que cette fois ci :

  • il selectionne le graph "1" dans mon excel, il n'y en aura qu'un (graph de performance)
  • il aille chercher le mot "balise" (la zone de texte ou le graph ira s'installer) et qu'il y mette le graph 1

C'est tout, peut etre qu'il y a plus simple pour copier coler un graphique à un endroit précis mais objectivement la dernière méthode marchait bien donc ....!

Encore merci H2so4, tu m'as épargné bon nombre d'heure de travail !

Rechercher des sujets similaires à "creer ppt via vba"