1 pièce(s) jointe(s)
erreur macro variant empty
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 aide :)Pièce jointe 654708Pièce jointe 654708Pièce jointe 654708