Automatiser le passage d'excel à powerpoint par vba

Grupinette

XLDnaute Nouveau
Bonjour à tous,

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é ?

Merci d'avance.
 

Grupinette

XLDnaute Nouveau
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.
 

Grupinette

XLDnaute Nouveau
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 !
 

JNP

XLDnaute Barbatruc
Re : Automatiser le passage d'excel à powerpoint par vba

Bonjour :)
C'est pas tout neuf ce fil... :p
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 :)
 

Grupinette

XLDnaute Nouveau
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 !
 

Pièces jointes

JNP

XLDnaute Barbatruc
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
Bonne journée :)
 

Grupinette

XLDnaute Nouveau
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 ?

Vraiment merci pour votre aide précieuse !
 

JNP

XLDnaute Barbatruc
Re : Automatiser le passage d'excel à powerpoint par vba

Re :)
- 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
Bonne suite :)
 

Grupinette

XLDnaute Nouveau
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.
 

Pièces jointes

JNP

XLDnaute Barbatruc
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 :)
 

Grupinette

XLDnaute Nouveau
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 :)

Pour l'histoire des feux tricolores j'ai suivi ce qui est présenté ici :
https://www.excel-downloads.com/threads/1000e-gael-indicateurs-visuels.51065/

Si vous avez une idée...
Merci !
 

JNP

XLDnaute Barbatruc
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 :)
 

Pièces jointes

Grupinette

XLDnaute Nouveau
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.

Encore merci !
 

JNP

XLDnaute Barbatruc
Re : Automatiser le passage d'excel à powerpoint par vba

Re :)
Faut pas être si pressée... :p
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 :)
 

Pièces jointes

Statistiques des forums

Discussions
315 284
Messages
2 118 014
Membres
113 406
dernier inscrit
NI-ZE