Bonjour tout le monde,

J'ai un problème d'assemblage dans ma macro qui consiste à remplir des zones de texte Powerpoint depuis des cellules dans un fichier Excel.

J'ai au préalable réussi une première version grâce à ces deux liens :
https://excel.developpez.com/faq/?page=Powerpoint
https://www.developpez.net/forums/d2...er-powerpoint/

Mais cela oblige à renseigner le lien du Powerpoint dans la macro (ou dans une cellule Excel).

J'ai voulu modifier la macro en ajoutant la possibilité de parcourir l'ordinateur pour sélectionner un modèle via un Application.GetOpenFilename mais c'est incompatible avec la première macro.

Ce sont les . en face des Slides(4).Shapes, sur l'aide Microsoft cela dit que je dois laisser les Set actifs mais c'est incompatible avec Application.GetOpenFilename.

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
Sub ModifierPresentationExistante()
 
Dim PptApp As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim Nom As Variant
 
NomClient = Range("NomClient").Value
 
Application.GetOpenFilename
 
'Set PptApp = CreateObject("Powerpoint.Application")
'PptApp.Visible = True
'Set PptDoc = PptApp.Presentations.Open("\Bureau\Modèles\Test - Powerpoint.pptx")
 
With PptDoc
 
    ActivePresentation.Slides(4).Shapes(2).TextFrame.TextRange.Text = "Here is some test text"
 
    .Slides(4).Shapes(2).TextFrame.TextRange.Text = Range("A3")
    .Slides(4).Shapes(7).TextFrame.TextRange.Text = Range("A4")
    .Slides(4).Shapes(8).TextFrame.TextRange.Text = Range("A5")
    .Slides(4).Shapes(13).TextFrame.TextRange.Text = Range("A6")
    .Slides(4).Shapes(12).TextFrame.TextRange.Text = Range("A7")
    .Slides(4).Shapes(15).TextFrame.TextRange.Text = Range("A8")
 
    .Slides(6).Shapes(5).TextFrame.TextRange.Text = Range("A13")
 
    PptDoc.SaveAs Filename:=ThisWorkbook.Path & "\" & Nom & ".pptx"
 
End With
 
PptDoc.Close
PptApp.Quit
 
End Sub
Et j'ai essayé une méthode sur Internet pour détecter le numéro de Shapes mais ça ne fonctionne pas, je suis obligé de les deviner en faisant défiler les numéros jusqu'à trouver. Par exemple pour la Shapes (15), il a fallu que je regarde si c'était les 14 premières ce qui est un peu laborieux.

Merci d'avance pour votre aide. Je sais que je suis proche de réussir mais je n'ai trouvé personne sur internet qui avait le même souci que moi.