Bonjour,
je réalise une macro pour générer automatiquement un power point, dont le modèle est dans un dossier à l'emplacement de la macro excel. Au lancement, le ppt se génère mais les titres de la première slide ne veulent pas se mettre à jour. Le fichier excel contant la macro possède un onglet "data" qui contient les données à coller dans le power point. à l'exécution, la macro s'arrête au code de la slide 1, indiquant la variable Data comme vide, mais pourtant il y a bien de la donnée sur les cellules pointées. ça s'arrête à ce bout de code: "Call Insert_texte(1, "entete_titre", Data.Cells(1, 12).Value)"
Voici le code complet:
Dim ppApp As PowerPoint.Application
Dim ppShp As PowerPoint.Shape
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
Dim excel_origine, chemin_acces, pptexport As String
Dim pptmaquette, chemin_acces_maquette As String
Dim Slide, nb_ligne As Integer
Dim Type_generation, Nom_shape, Cells As String
Dim titre1, titre2, titre3, titre4 As String
Sub Generation()
'------ Paramétrage des variables ------'
'Stockage du nom de ce fichier
excel_origine = ThisWorkbook.Name
'Stockage du chemin d'accès de ce fichier
chemin_acces = ThisWorkbook.Path
'Stockage du chemin d'accès des maquettes qui sont dans un sous dossier nommé "Template"
chemin_acces_maquette = ThisWorkbook.Path & "\Template"
'------ Récuperation des paramètres ------'
'- Le nom du nouveau template
pptmaquette = "Snapshot maquette bureaux.pptx"
'- Le nom du fichier d'enregistrement à utiliser
pptexport = WIP.Cells(10, 3)
'Ouverture de la maquette powerpoint
Set ppApp = New PowerPoint.Application
Set ppPres = ppApp.Presentations.Open(chemin_acces_maquette & pptmaquette)
'ppApp.Presentations.Open chemin_acces_maquette & pptmaquette
'Enresgitrement de la maquette powerpoint sous son nom de MarketView
ppPres.SaveAs chemin_acces & "" & pptexport, ppSaveAsOpenXMLPresentation
'SLIDE 1
'--- Récapitulatif du MV en cours de génération
ppPres.Slides(1).Select
Call Insert_texte(1, "entete_titre", Data.Cells(1, 12).Value)
Call Insert_texte(1, "recap_titre", Data.Cells(1, 11).Value)
Call Insert_texte(1, "titre_ind", Data.Cells(2, 11).Value)
'--- Indicateur de demande placée
Call Insert_texte(1, "DP_Ind", Data.Cells(9, 3).Value)
'--- Indicateur de loyer prime neuf
Call Insert_texte(1, "loyerneuf_Ind", Data.Cells(9, 8).Value)
'--- Indicateur de loyer prime seconde main
Call Insert_texte(1, "loyerancien_Ind", Data.Cells(9, 13).Value)
'--- Indicateur d'offre immédiate
Call Insert_texte(1, "OI_Ind", Data.Cells(9, 18).Value)
'--- Indicateur de taux de vacance
Call Insert_texte(1, "txvacance_Ind", Data.Cells(9, 23).Value)
'--- Indicateur d'offre future certaine neuve
Call Insert_texte(1, "Ofuture_Ind", Data.Cells(9, 28).Value)
MsgBox ("La génération est terminée")
'Réinitilisation de la page de lancement
'Generation.Cells(8, 5) = ""
'Generation.Cells(10, 5) = ""
'Generation.Cells(12, 5) = ""
'Enresgitrement et fermeture du classeur Excel
ThisWorkbook.Save
'ThisWorkbook.Close
If Type_generation <> "Aucun" Then
With ppApp
.Quit
End With
End If
Excel.Application.Quit
End Sub
Si vous avez une idée de ce qu'il faudrait modifier svp? Par avance un grand merci pour votre aideTest Latifa_BUR_Données_Graphiques_Tableaux_Listings.xlsmTest Latifa_BUR_Données_Graphiques_Tableaux_Listings.xlsmTest Latifa_BUR_Données_Graphiques_Tableaux_Listings.xlsm
Partager