XL 2016 excel et powerpoint

stephanie94

XLDnaute Nouveau
Bonjour,
je bute sur un problème
j'ai un fichier excel crée à partir d'un formulaire form, je voudrais qu'a chaque nouvelle entrée dans Excel cela génère une slide dans un fichier powerpoint, mais je vois pas comment faire pour cela soit automatique
je vous joint le fichier excel et le template powerpoint
 

Pièces jointes

  • PUBLICATION FORM (2).pptx
    45.4 KB · Affichages: 14
  • publications form responses.xlsx
    8.8 KB · Affichages: 4
C

Compte Supprimé 979

Guest
Bonjour,

Suivez ce sujet, vous aurez peut-être les réponses 😜
 

stephanie94

XLDnaute Nouveau
malheureusement on aucune réponse sur ce sujet.
j'ai désespérément cherché une solution je ne connait pas VBA et macro, mais je troue souvent des codes que j'arrive à adapter.
mon fichier risque à terme d'etre très gros et je voudrais une "banque de slide" avec toutes les lignes représentés.
copier coller avec liaison: fastidieux et risqué (copie colle de cellules blanches)
les seules macros que j'ai trouvées ne me permettent pas d'ajouter une slide
en fait à chaque fois qu'une ligne est crée il faut que les données présentes dans chaque cellule soient migrées dans chaque forme présente dans le modèle de ma slide . et ainsi de suite
merci de votre aide
cordialement
 

juvaxe

XLDnaute Occasionnel
Bonjour stephanie94

Le sujet que tu as posé il y a quelques jours m'a paru intéressant; bien que je n'en aurai pas l'usage, j'ai passé un 'peu de temps" à y réfléchir.

Tu n'as pas de réponse : il faut en prendre acte et considérer qu'à partir d'Excel il n'y a pas de voie possible.

J'ai donc oublié Excel et j'ai pensé "PowerPoinT".

PPT a des possibilités d'adaptation en VBA; la plupart des fonctionnalités sont disponibles en VBA, notamment les principales : dupliquer un slide, ajouter un slide et le créer entièrement avec formes et textes, accéder à Accès ou à une base de données, ou encore ouvrir un fichier séquentiel de type TXT ou CSV, etc...

Il y a cependant quelques différences avec Excel; quand on connaît Excel ce sont des choses qui manquent et nécessitent de s'adapter.

Je pense en particulier au ScreenUpdating et au StopEvents qui font défaut. De plus il y a bien des modules VBA dans PPT mais pas de macro qui pourraient les actionner par des boutons ou autre menu.

Je n'ai pas pu masquer l'ouverture du classeur Excel le temps de récupérer les données; je crois qu'il y a une solution un peu moins simple : avis à un connaisseur éventuel !

Tu avais peut-être imaginé un scénario automatique dans lequel un bouton par exemple allait générer immédiatement un slide "quelque part".

Dans ce que j'ai trouvé, il y a une rupture dans ce scénario idéal. J'ai seulement trouvé une solution dans laquelle PPT, à partir du classeur Excel que tu as fourni, va générer, en dupliquant le Slide type que tu as également fourni, autant de slides renseignés avec les données qui sont dans le classeur.

C'était l'objectif essentiel me semble-t-il.

Comme dit précédemment au lieu d'un Classeur Excel dont le nom est codé en dur dans un module, ce pourrait être des fichiers TXT ou CSV à condition d'aménager en conséquence la procédure d'acquisition des données externes. La séquence VBA de duplication du Slide de référence fonctionne à partir d'un "Tablo"; en amont il faut le créer c'est tout.

Je te retourne :

1 - Le classeur des Slides à créer; il n'a pas changé, j'en ai seulement rajouté un second pour mes essais.

2 - Un PPT suffixé "manu". Comme dit précédemment il n'y a pas de macro ni de bouton. Ce n'est pas bien ergonomique, mais il faut aller, en mode développeur, dans le code pour localiser dans le Module1 la routine "Creat_Slides" et en demander l'exécution. Le classeur "publications form ..." doit être dans le même répertoire. Après pas de problème! Il y a peut-être une autre solution ..

3 - Un PPT suffixé "auto". Je ne suis pas certain de la stabilité de celui-ci. Il faudra donc que tu le vérifies bien, même très bien. Dans celui-ci il suffit de lancer le panorama pour que la duplication démarre toute seule. J'ai repris un PPT dans lequel j'avais mis une gestion d'évènement qui est nécessaire pour activer un VBA qui aurait été mis en correspondance d'un Slide. Comme on ne peut pas faire de StopEvents dans PPT j'ai des doutes sur la façon dont il se déroule. Tu verras au démarrage et aux ESC pour sortir. Si tu trouves quelque chose, je suis preneur même si l'utilité n'est plus évidente pour moi.

Si tu a besoin de précisions complémentaires par rapport à ce que je te fourni : pas de pb.

Bonne réception ... et bon courage

Cdt
 

Pièces jointes

  • publications form responses.xlsx
    8.5 KB · Affichages: 4
  • PUBLICATION FORM _ Manu.pptm
    67 KB · Affichages: 6
  • PUBLICATION FORM _ Auto.pptm
    84.6 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour stephanie94, Bruno, juvaxe,

PowerPoint peut se piloter depuis Excel, exécutez par exemple cette macro :
VB:
Sub PowerPoint()
Dim PPT As Object
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
With PPT.Presentations.Add
    .Slides.Add Index:=1, Layout:=2
    .Slides(1).Shapes(2).Delete
    .Slides(1).Shapes(1).Delete
    .Slides(1).Shapes.AddShape(msoShapeRectangle, 0, 0, 250, 140).TextFrame.TextRange.Text = "Bonjour le forum"
End With
End Sub
Edit : suppression préalable des 2 Shapes (zones de texte).

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Ou encore :
VB:
Sub PowerPoint2()
Dim PPT As Object
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
With PPT.Presentations.Add
    .Slides.Add Index:=1, Layout:=2
    .Slides(1).Shapes(1).TextFrame.TextRange = "Bonjour le forum"
    .Slides(1).Shapes(2).TextFrame.TextRange = "Belle journée n'est-ce pas ?"
End With
End Sub
 

juvaxe

XLDnaute Occasionnel
Bonjour job75, stephanie94

J'ai pris, probablement, une fausse direction quand j'ai lu stephanie94 écrire qu'elle n'avait rien trouvé sur Internet ou ailleurs.

En fait on peut se faire un complément VBA dans Excel pour créer et modifier des Slides dans PPT.

stéphanie94 a probablement intérêt à partir des exemples que tu proposes; VBA dans PPT est possible, mais pas aussi élaboré qu'il est sous Excel.

Par ailleurs je n'ai pas très bien compris la finalité de ce que veut faire stephanie94.

Cdt
 

juvaxe

XLDnaute Occasionnel
Bonjour stephanie94

J'ai commis une erreur dans mon premier message.

J'ai dit qu'avec la formule "manu" il fallait aller dans le module1 en mode développeur pour déclencher la macro.

En fait ce n'est pas nécessaire : dans le menu "Affichage" à droite il y a un bouton "macro". Il suffit de l'actionner pour demander l'exécution de la macro creat-slides. La solution marche sans difficultés.

Inutile de s'embarquer dans la solution "auto".

Cdt
 

stephanie94

XLDnaute Nouveau
bonjour,

merci pour toutes vos réponses et ui malgré mes recherches , je n'ai pas trouvé de choses bien concrètes
pourquoi je chercher tout simplement car un formulaire est transmis pour remplir ces données et je dois le présenter dans un format spécial cela m'évite le copier coller tous les mois
merci encore à tous pour votre aide à force je vais peut être y arriver
cordialement
 

stephanie94

XLDnaute Nouveau
Bonjour stephanie94

J'ai commis une erreur dans mon premier message.

J'ai dit qu'avec la formule "manu" il fallait aller dans le module1 en mode développeur pour déclencher la macro.

En fait ce n'est pas nécessaire : dans le menu "Affichage" à droite il y a un bouton "macro". Il suffit de l'actionner pour demander l'exécution de la macro creat-slides. La solution marche sans difficultés.

Inutile de s'embarquer dans la solution "auto".

Cdt
MERCI BEAUCOUP, juste un souci cela fonctionne mais si par exemple j'ajoute une 3eme ligne dans mon tableau, dans ppt, seul les 2 premeieres lignes sont creé peux tu m'indiquer comment faire pour qu'a chaque nouvelle ligne créé la slide se crée avec les données de la 3eme ligne et ainsi de suite
 

stephanie94

XLDnaute Nouveau
Bonjour stephanie94

Le sujet que tu as posé il y a quelques jours m'a paru intéressant; bien que je n'en aurai pas l'usage, j'ai passé un 'peu de temps" à y réfléchir.

Tu n'as pas de réponse : il faut en prendre acte et considérer qu'à partir d'Excel il n'y a pas de voie possible.

J'ai donc oublié Excel et j'ai pensé "PowerPoinT".

PPT a des possibilités d'adaptation en VBA; la plupart des fonctionnalités sont disponibles en VBA, notamment les principales : dupliquer un slide, ajouter un slide et le créer entièrement avec formes et textes, accéder à Accès ou à une base de données, ou encore ouvrir un fichier séquentiel de type TXT ou CSV, etc...

Il y a cependant quelques différences avec Excel; quand on connaît Excel ce sont des choses qui manquent et nécessitent de s'adapter.

Je pense en particulier au ScreenUpdating et au StopEvents qui font défaut. De plus il y a bien des modules VBA dans PPT mais pas de macro qui pourraient les actionner par des boutons ou autre menu.

Je n'ai pas pu masquer l'ouverture du classeur Excel le temps de récupérer les données; je crois qu'il y a une solution un peu moins simple : avis à un connaisseur éventuel !

Tu avais peut-être imaginé un scénario automatique dans lequel un bouton par exemple allait générer immédiatement un slide "quelque part".

Dans ce que j'ai trouvé, il y a une rupture dans ce scénario idéal. J'ai seulement trouvé une solution dans laquelle PPT, à partir du classeur Excel que tu as fourni, va générer, en dupliquant le Slide type que tu as également fourni, autant de slides renseignés avec les données qui sont dans le classeur.

C'était l'objectif essentiel me semble-t-il.

Comme dit précédemment au lieu d'un Classeur Excel dont le nom est codé en dur dans un module, ce pourrait être des fichiers TXT ou CSV à condition d'aménager en conséquence la procédure d'acquisition des données externes. La séquence VBA de duplication du Slide de référence fonctionne à partir d'un "Tablo"; en amont il faut le créer c'est tout.

Je te retourne :

1 - Le classeur des Slides à créer; il n'a pas changé, j'en ai seulement rajouté un second pour mes essais.

2 - Un PPT suffixé "manu". Comme dit précédemment il n'y a pas de macro ni de bouton. Ce n'est pas bien ergonomique, mais il faut aller, en mode développeur, dans le code pour localiser dans le Module1 la routine "Creat_Slides" et en demander l'exécution. Le classeur "publications form ..." doit être dans le même répertoire. Après pas de problème! Il y a peut-être une autre solution ..

3 - Un PPT suffixé "auto". Je ne suis pas certain de la stabilité de celui-ci. Il faudra donc que tu le vérifies bien, même très bien. Dans celui-ci il suffit de lancer le panorama pour que la duplication démarre toute seule. J'ai repris un PPT dans lequel j'avais mis une gestion d'évènement qui est nécessaire pour activer un VBA qui aurait été mis en correspondance d'un Slide. Comme on ne peut pas faire de StopEvents dans PPT j'ai des doutes sur la façon dont il se déroule. Tu verras au démarrage et aux ESC pour sortir. Si tu trouves quelque chose, je suis preneur même si l'utilité n'est plus évidente pour moi.

Si tu a besoin de précisions complémentaires par rapport à ce que je te fourni : pas de pb.

Bonne réception ... et bon courage

Cdt
merci après queleques recherches cela fonctionne avec le fichier manuel
merci beaucoup+++
 

job75

XLDnaute Barbatruc
Bonjour stephanie94, le forum,
mais si par exemple j'ajoute une 3eme ligne dans mon tableau, dans ppt, seul les 2 premeieres lignes sont creé peux tu m'indiquer comment faire pour qu'a chaque nouvelle ligne créé la slide se crée avec les données de la 3eme ligne et ainsi de suite
Testez ces 2 macros :
VB:
Sub PowerPoint1()
Dim tablo(1 To 3), PPT As Object
tablo(1) = "Bonjour Stéphanie"
tablo(2) = "Bonjour le forum"
tablo(3) = "Bonjour à tous"
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
With PPT.Presentations.Add
    .Slides.Add Index:=1, Layout:=2
    .Slides(1).Shapes(1).Delete
    .Slides(1).Shapes(1).TextFrame.TextRange = tablo(1) & vbLf & tablo(2) & vbLf & tablo(3)
End With
End Sub

Sub PowerPoint2()
Dim tablo(1 To 3), PPT As Object, n%
tablo(1) = "Bonjour Stéphanie"
tablo(2) = "Bonjour le forum"
tablo(3) = "Bonjour à tous"
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
With PPT.Presentations.Add
    For n = 1 To 3
        .Slides.Add Index:=n, Layout:=2
        .Slides(n).Shapes(2).Delete
        .Slides(n).Shapes(1).TextFrame.TextRange = tablo(n)
    Next
End With
End Sub
A+
 

juvaxe

XLDnaute Occasionnel
Bonjour stephanie94, bonjour job75

Pour moi, il n'y a pas de limite dans le nombre de Slides qui peuvent être créés dans une même session.

Je viens de faire un essai qui enchaine la création de 6 slides.

Si tu rencontres un nouvel incident tu peux m'envoyer la situation dans laquelle il se produit. Remplacer le contenu des cellules de la feuille ne devrait pas avoir d'impact sur le résultat.

Le seul point qui peut poser problème est une colonne 1 non renseignée, car le nombre de lignes à prendre en considération dans le tableau est calculé sur cette colonne.

Par ailleurs, suite au premier retour de job75 et à quelques recherches complémentaires sur Internet, je suis parvenu à mettre en œuvre la solution dans laquelle Excel pilote PPT.

C'est la solution pour laquelle tu avais posté au départ. Je la joins à ce message.

La feuille Excel de base est maintenue bien évidemment, j'ai ajouté une nouvelle feuille dans le classeur pour y mettre le bouton de commande.

Dans la macro Excel, j'ai repris l'essentiel de la macro que j'avais faite dans PPT.

A la fin, la Présentation PPT reste ouverte. Si tu souhaites qu'il en soit autrement, à savoir Présentation fermée après mise à jour et fermeture de Power Point : soit tu modifies le code VBA dans le module 1, j'ai suffisamment documenté (...me semble-t-il), soit je te le ferai suivant ta demande.

Peux-tu nous dire ce que tu fais des slides que tu viens de créer ? Tu les imprimes ? Tu enrichis la présentation à chaque passage ?

Je me demande si l'ordinateur ne pourrait pas faire davantage pour toi.

Bonne réception

Cdt
 

Pièces jointes

  • publications form responses.xlsm
    31.7 KB · Affichages: 13
  • PUBLICATION_slides.ppt
    183.5 KB · Affichages: 8

stephanie94

XLDnaute Nouveau
Bonjour,

et un grand merci cela fonctionne parfaitement. cela me permet effectivement d'enrichir la master presentation mais après c'est plutot simple car je copie et je colle avec un update constante donc cela me convient
merci encore cette automatisation va me permettre un énorme gain de temps
d'autant plus qu'en étudiant un peu plus le code , je pourrais peut être l'adapter pour d'autres types de presentations
merci encore
 

Discussions similaires