Bonjour à tous,
j'ai mis cette discussion dans le forum POWERPOINT, mais je pense qu'il est plus approprié de la placer sur celui d'excel, voici donc :
j'ai un dossier Excel : Devis-pour-ppt.xlsm
depuis un formulaire contenu dans feuille "menu"
je sélectionne dans la comboboxFeu sur l'onglet devis, le type de feu
cela remplit d'après les différentes feuilles du dossier, tous les onglets du formulaire
je veux ensuite depuis VBA (pour le moment) lancer la macro PPT
qui crée un diaporama basé sur le modèle DEVIS-PPT1.pptx
j'ai deux problèmes :
1er problème : si la cellule M de la feuille "description-prod" (correspondant à la colonne "FRESQUE" est différente de 0, alors créer diaporama en dupliquant la diapo 1
et en remplissant les différentes cellules du tableau de la diapo1 avec les valeurs correspondantes de la feuille "description-prod"
cela crée bien le diaporama mais :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 Sub PPT() Dim objPPT As Object Dim objPres As Object Dim objSld As Object Dim objShp As Object Dim Rg As Range With Sheets("description-prod") Tablo = Range("A2:N" & Range("N65000").End(xlUp).Row).Value End With Set objPPT = CreateObject("Powerpoint.Application") objPPT.Visible = True Set objPres = objPPT.Presentations.Open(ThisWorkbook.Path & "\DEVIS-PPT1.pptx") objPres.SaveAs ThisWorkbook.Path & "\testdevis.pptx" 'recherche de la dernière cell M With Worksheets("description-prod") Set Rg = .Range("M2:M" & Range("M65000").End(xlUp).Row) End With 'si la cell M est différente de 0, alors fusion entre Excel et Ppt If ActiveCell <> 0 Then For i = 1 To UBound(Tablo) Set objSld = objPres.Slides(1).Duplicate For Each objShp In objSld.Shapes If objShp.HasTable Then With objShp.Table X = X + 1 .cell(1, 1).Shape.TextFrame.TextRange.Text = Tablo(X, 13) .cell(4, 1).Shape.TextFrame.TextRange.Text = Tablo(X, 6) .cell(4, 2).Shape.TextFrame.TextRange.Text = Tablo(X, 7) .cell(5, 2).Shape.TextFrame.TextRange.Text = Tablo(X, 11) .cell(5, 3).Shape.TextFrame.TextRange.Text = Tablo(X, 12) End With End If Next Next Else ActiveCell.Offset(1, 0).Range("A1").Select End If objPres.Slides(1).Delete objPres.save objPres.Close End Sub
- ne tient pas compte de la valeur de la cellule M --> fusionne toutes les cellules même = 0
- ne remplit pas les lignes suivantes du tableau du diaporama
- met les diapos dans l'ordre inverse : commence la fusion par la dernière cellule et non la première
======================================================
2ème problème
je voudrais sur le même diaporama, en diapo 2
insérer l'image qui correspond à la cellule M <> 0 et dont le chemin est contenu dans la colonne N de la feuille "description-prod"
et là je sèche quant à la bonne syntaxe en sachant que je dois avoir en résultat final :
diapo 1 avec les données
et à la suite diapo 2 avec l'image correspond au données de la diapo 1
et ainsi de suite
======================================================
un peu complexe n'est-ce-pas ?
je suis sûre de ne pas être loin du bon résultat
mais je n'y vois plus clair du tout
votre aide serait la bienvenue !
et d'avance merci
Partager