J'ai un fichier excel contenant 14 onglets et je souhaiterai pouvoir créer un fichier powerpoint reprenant 1 onglet excel par diapo.
J'ai suivi ce qui est donné ici https://www.excel-downloads.com/threads/fichier-excel-vers-powerpoint-a-plusieurs-onglets.141381/ par JNP, j'ai copié le code et changé le nom du fichier par le mien.
Lorsque je lance la macro power point s'ouvre mais seulement 4 diapos sont créées et tout n'est pas copié, seulement les quelques formes (flèche, bouton...) présentes sur mes pages excel...
Auriez-vous une idée de ce qu'il faut modifier pour que tout soit recopié ?
Re : Automatiser le passage d'excel à powerpoint par vba
Bonjour,
Voici le code que j'ai copié :
Option Explicit
Sub Export_Ppt()
'necessite d'activer la reference Microsoft Powerpoint Object Library
Dim PPT As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim NbShpe As Byte
Set PPT = CreateObject("Powerpoint.Application") 'creation session PowerPoint
PPT.Visible = True 'l'application sera visible
Set PptDoc = PPT.Presentations.Open(ThisWorkbook.Path & "/Présentation1.ppt") 'ouverture fichier ppt
Dim Feuille As Worksheet, I As Integer, J As Integer, NbreGraphiques As Integer
I = 2
For Each Feuille In ThisWorkbook.Worksheets NbreGraphiques = Feuille.Shapes.Count
For J = 1 To NbreGraphiques
If Feuille.Shapes(J).Name <> "CommandButton1" Then
PptDoc.Slides.Add I, ppLayoutBlank
Feuille.Shapes(J).Copy
PptDoc.Slides(I).Shapes.Paste
I = I + 1
End If
Next J
Next
PptDoc.Save 'sauvegarder les modifications
PptDoc.Close 'fermer le document ppt
PPT.Quit 'fermer l'application powerPoint
End Sub
Quand je lance la macro, power point s'ouvre, une diapo est créée mais rien de plus. Quand je lance le débogage des lignes sont surlignées en jaune (en rouge dans le code) mais je ne sais pas quel est le problème...
Si vous avez une idée je suis preneuse ! Merci d'avance.
Re : Automatiser le passage d'excel à powerpoint par vba
Re,
Mon problème évolue, je ne sais pas pourquoi mais ma macro fonctionne enfin, power point s'ouvre, plusieurs vignettes sont créées, mes graphiques sont copiés. Cependant, une diapo blanche sépare chacun de mes graphiques, est ce que ça vient du code ou du fichier excel en lui même ?
De plus j'aimerai pouvoir gérer la mise en page des diapo, je souhaiterai juste que mes graphiques soient centrés sur la diapo. J'ai essayé de copier ce morceau de code :
'Renomme et met en forme l'objet collé
With Diapo.Shapes(NbShpe)
.Name = "monGraph" 'personnalise le nom
.Left = 150 'définit la position horizontale dans le slide
.Top = 100 'définit la position verticale dans le slide
.Height = 300 'hauteur
.Width = 400 'largeur
Mais ça ne fonctionne pas, peut être que je ne l'ai pas ajouté au bon endroit...
Si quelqu'un a des idées pour résoudre ces 2 problèmes...
Merci beaucoup !
Re : Automatiser le passage d'excel à powerpoint par vba
Bonjour
C'est pas tout neuf ce fil...
Bon, pour tes diapos vides, mon code à l'époque générait une nouvelle diapo pour chaque "forme" trouvée dans tout le classeur à l'exception de celles nommées "CommandButton1".
C'est pour cela que tant qu'il n'y avait pas de graphique, il ne copiait que tes "flèches, boutons..."
Donc ça veut dire qu'il faut supprimer ces flèches, boutons, etc. ou vérifier le nom de la forme...
Pour l'autre partie, sans fichier exemple (sans données confidentielles), difficile de tester...
Bonne suite
Re : Automatiser le passage d'excel à powerpoint par vba
Bonsoir,
J'ai créé un fichier plus petit avec des données non confidentielles ^^
J'ai masqué les colonnes que je ne souhaitais pas voir sur les diapos et j'ai groupé tous les éléments de chaque onglet que je veux avoir sur la même diapo.
La macro fonctionne mais je rencontre 2 problèmes :
- 1 diapo est créée avec le curseur qui gère mon feu tricolore, j'ai pensé à le grouper avec le graphique mais je préfèrerai qu'il n'apparaisse pas du tout sur la diapo.
- je voudrais que les graphiques soient centrés sur mes diapos...
Voilà j'espère que vous pourrez m'aider
Merci et bonne soirée !
Re : Automatiser le passage d'excel à powerpoint par vba
Re
Code:
Sub Export_Ppt()
'necessite d'activer la reference Microsoft Powerpoint Object Library
Dim PPT As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
Dim NbShpe As Byte
Set PPT = CreateObject("Powerpoint.Application") 'creation session PowerPoint
PPT.Visible = True 'l'application sera visible
Set PptDoc = PPT.Presentations.Open(ThisWorkbook.Path & "/Présentation1.ppt") 'ouverture fichier ppt
Dim Feuille As Worksheet, I As Integer, J As Integer, NbreGraphiques As Integer
I = 2
For Each Feuille In ThisWorkbook.Worksheets
NbreGraphiques = Feuille.Shapes.Count
For J = 1 To NbreGraphiques
If Feuille.Shapes(J).Name <> "Scroll Bar 1" And Feuille.Shapes(J).Name <> "Oval 9" Then
PptDoc.Slides.Add I, ppLayoutBlank
Feuille.Shapes(J).Copy
With PptDoc.Slides(I).Shapes
.Paste
.Range.Align msoAlignCenters, msoTrue
.Range.Align msoAlignMiddles, msoTrue
End With
I = I + 1
End If
Next J
Next Feuille
PptDoc.Save 'sauvegarder les modifications
MsgBox "Opération terminée."
End Sub
Re : Automatiser le passage d'excel à powerpoint par vba
Merci beaucoup, ça progresse !!
Encore quelques remarques :
- est-il possible de faire en sorte que le bouton créé sur excel pour accéder à la macro n'apparaisse pas dans le powerpoint comme les curseurs ?
- est-il possible de conserver les mêmes couleurs sur powerpoint que sur excel pour les graphiques ?
- il y a encore quelques diapos blanches entre mes graphiques, mais pas entre chaque, de quoi cela peut-il venir ?
- est-il possible de faire en sorte que le bouton créé sur excel pour accéder à la macro n'apparaisse pas dans le powerpoint comme les curseurs ? Il n’apparaît pas dans ton fichier exemple... Parce que j'ai ôté "Oval 9" des formes à copier sur cette ligne :
Code:
If Feuille.Shapes(J).Name <> "Scroll Bar 1" And Feuille.Shapes(J).Name <> "Oval 9" Then
- est-il possible de conserver les mêmes couleurs sur powerpoint que sur excel pour les graphiques ? Il faut que le thème soit identique dans le fichier Excel et dans le fichier PowerPoint.
- il y a encore quelques diapos blanches entre mes graphiques, mais pas entre chaque, de quoi cela peut-il venir ?
Idem si dessus, il faut exclure toutes formes que tu ne veux pas, le plus simple est de les lister avec :
Code:
Sub test()
Dim Feuille As Worksheet, I As Integer, J As Integer, NbreGraphiques As Integer
I = 2
For Each Feuille In ThisWorkbook.Worksheets
NbreGraphiques = Feuille.Shapes.Count
For J = 1 To NbreGraphiques
MsgBox Feuille.Shapes(J).Name
I = I + 1
Next J
Next Feuille
End Sub
Re : Automatiser le passage d'excel à powerpoint par vba
Re,
Merci pour votre rapidité !
Je vous joins la présentation obtenue avec le code, le bouton ovale apparaît... Où puis je trouver le nom de ce bouton ?
Et comment est ce que je nomme la page blanche dans le code ? Je n'ai pas d'onglet vide dans mon fichier excel alors je ne vois pas trop comment lui dire de ne pas de diapo vide...
Je viens également de remarquer que lorsque je ferme et réouvre la présentation ppt mes feux tricolores ne sont plus "allumés". Y a t il quelque chose à faire pour remédier à ce problème ?
Merci beaucoup pour le temps que vous me consacrez.
Re : Automatiser le passage d'excel à powerpoint par vba
Re
Je t'ai mis la Sub Test() dans le message précédent, elle va te lister le nom de toutes les formes, dont ton ovale...
Pour supprimer la première diapo
Code:
...
Next Feuille
PptDoc.Slides(1).Delete
PptDoc.Save 'sauvegarder les modifications
...
Par contre, tes feux tricolores, je ne sais pas comment ils fonctionnent... Donc difficile de t'expliquer comment les sauvegarder... Le mieux serait qu'ils soient modifiés par macro, ça permettrait de figer le résultat...
Bonne chance
Re : Automatiser le passage d'excel à powerpoint par vba
Alors "ovale 9" s'appelle désormais "Ellipse1", j'ai fait la modif et c'est ok ça marche.
Pour les diapo blanches en fait il n'y a pas que la 1ère, en fait j'ai 27 onglets à copier et je me retrouve avec 12 diapos blanches parmi mes graphiques. J'ai noté le numéro de toutes les diapos blanches et j'ai recopié le code
PptDoc.Slides(1).Delete en mettant le numéro des diapos à supprimer autant de fois que nécessaire. Je ne sais pas si c'est très académique mais ça a l'air de fonctionner je n'ai plus de diapos blanches dans mon powerpoint
Re : Automatiser le passage d'excel à powerpoint par vba
Re
En utilisant un indicateur comme celui que je t'ai refais, ça semble fonctionner
Faudra juste réadapter le code pour chaque feuille, peut-être
Bon courage
Re : Automatiser le passage d'excel à powerpoint par vba
Bonjour,
Merci beaucoup, ça fonctionne très bien et les feux ne s'"éteignent" plus dans le powerpoint. Il faut effectivement recopier le code pour chaque onglet (à moins que je m'y prenne mal, ce qui n'est pas impossible^^).
Question bonus : Est-il possible de piloter 2 feux tricolores avec le même curseur ? Je souhaiterai créer un onglet récapitulatif avec tous les titres des graphiques et le feu tricolore correspondant, j'aimerai ainsi qu'il se mettre à jour tout seul sur cette page lorsque je le modifie sur l'onglet.
Re : Automatiser le passage d'excel à powerpoint par vba
Re
Faut pas être si pressée...
C'est faisable, la preuve, mais ça va être un peu coton à gérer, vu qu'il va falloir changer le nom de chaque ellipse pour que ça puisse correspondre...
Bon courage