IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA PowerPoint Discussion :

Données Excel vers Powerpoint ?


Sujet :

VBA PowerPoint

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Données Excel vers Powerpoint ?
    Bonjour,

    Avant tout, désolée si la question a déjà été posée ; en cherchant un peu sur le forum j'ai trouvé des pistes mais pas vraiment mon bonheur...

    J'ai un fichier Powerpoint avec énormément de slides ; sur chaque slide j'ai des tableaux et des graphiques dont les données respectives à intégrer se trouvent dans un fichier excel.

    Sachant que je vais devoir créer 13 autres fichiers powerpoint qui seront identiques sur la forme et où seules les données présentes dans excel vont changer, j'aimerais éviter d'avoir à remplir chacun de ces powerpoint : l'idéal serait d'avoir à faire une manip' sur le premier et qu'ensuite, en ouvrant les autres avec leurs excel respectifs, ils se remplissent/ mettent à jour automatiquement.

    Cela serait-il possible et si oui, comment procéder ?
    J'espère que ce que je raconte est assez clair !

    Merci beaucoup par avance !

  2. #2
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    C'est largement faisable.
    Le truc est de faire un PowerPoint de référence avec un style bien précis.
    Dans ton fichier Excel, tu auras tes données que tu voudras exporter. En VBA, tu devras utiliser des copy, replace, duplicate. Bref, jouer entre les slides, les shapes et le contenu des shapes.

    Utilise des mots clés pour pouvoir remplacer ou copier des shapes ou slides.

    Dans un premier temps, c'est assez compliqué à faire mais une fois que tu as commencé et que sa fonctionne, le reste ira vite.

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Super, merci pour cette réponse rapide
    Sachant que c'est a priori faisable, je vais me pencher dessus alors !

    En revanche, je n'ai vraiment que quelques notions en VBA ; je pense pouvoir me débrouiller pour dupliquer, modifier, etc... selon les slides et shapes mais avoir une trame m'aiderait beaucoup...
    Serait-il possible d'avoir un petit exemple de code ? Juste pour un graph ou un tableau (je peux créer des mini xsl et ppt tests si besoin)

    Merci beaucoup en tous les cas.

  4. #4
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    Je rectifie ton post précédent : c'est faisable !
    Si tu as peu de notions en VBA, commences déjà à manipuler des objets d'Excel à Excel pour voir si tu arrives à sélectionner des objets.
    Il existe l'enregistreur de macros sous Excel qui pourrait t'aider à faire cela.

    Un exemple rapide pour la manipulation sous PowerPoint :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PPPres.slides("Nom_Slide").Shapes("Nom_Shape").TextFrame.TextRange.Replace "«*Date*»", Format(fRecap.Range("F14"), "dd mmmm yyyy")
    PPPres est une variable qui me permet de dire que c'est l'objet PowerPoint sur lequel je travaille.

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Bon je commence tout juste à vraiment me pencher sur la question...
    Je ne sais pas si c'est très sensé ce que je fais mais en tâtonnant et en partant de ce que j'avais dans l'idée, j'ai pour l'instant écrit l'ébauche de code ci-dessous :

    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
     
     
    Sub TableauTemplateDef()
        Dim sld2 As Slide
        Dim shpTable2 As Table
        Dim strSource2 As String
        Dim o As Integer
        Dim p As Integer
     
        Dim eApp2 As Excel.Application
        Dim eWb2 As Excel.Workbook
     
        Set eApp2 = CreateObject("Excel.Application")
        Set eWb2 = eApp2.Workbooks.Open("C:\Users\user\Documents\4. Avril 2014\SK France.xlsx")
     
        Set sld2 = ActivePresentation.Slides(1)
        Set shpTable2 = sld2.Shapes("Table 2").Table
     
        strSource2 = eWb2.Sheets(2).Cells(5, 3)
     
        For o = 1 To shpTable2.Columns.Count
            For p = 1 To shpTable2.Rows.Count
     
                    shpTable2.Cell(p, o).Shape.TextFrame.TextRange.Text = strSource2
     
            Next p
        Next o
     
    End Sub
    Cela fonctionne, mais avec ça toutes les cellules de mon tableau ppt ("Table 2") prennent la valeur de la cellule C5 de l'excel (normal puisque c'est ainsi que j'ai défini strSource2).
    En fait j'aimerais que Table 2 prenne les valeurs, disons, de la plage C5:C7 de l'excel.
    Le truc c'est que je n'arrive pas à définir/me servir d'une plage au lieu d'une simple cellule... J'ai fait quelques tests en essayant d'utiliser l'objet Range mais sans succès...

  6. #6
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strSource2 = eWb2.Sheets(2).Cells(5, 3) 
        For o = 1 To shpTable2.Columns.Count
            For p = 1 To shpTable2.Rows.Count
                    shpTable2.Cell(p, o).Shape.TextFrame.TextRange.Text = strSource2
            Next p
        Next o
    Devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For o = 1 To shpTable2.Columns.Count
        For p = 1 To shpTable2.Rows.Count
            shpTable2.Cell(p, o).Shape.TextFrame.TextRange.Text = eWb2.Sheets(2).Cells(p + 5, o + 3)
        Next p
    Next o
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Tout simplement ! Merci

    Entre temps j'ai adapté le code pour gérer les charts (et pas seulement les tables) ; cela fonctionne mais il me manque juste une chose : je ne sais pas comment lui dire de prendre la même mise en forme dans le workbook cible que dans le worbook source...

    J'ai par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Set shpGraph = sld2.Shapes("Graphique 57").Chart
    o = 2
    For p = 2 to 6
    shpGraph.ChartData.Activate
    shpGraph.ChartData.Workbook.Worksheets("Feuil1").Cells(p,o) = eWb2.Sheets(2).Cells(5, p + 2)
    Next p
    Et il faudrait qu'en plus de récupérer les données, il récupère aussi automatiquement la mise en forme des cellules (plus précisément la couleur de police et de remplissage).

    D'ailleurs, dans l'idéal, j'aimerais aussi attribuer une mise en forme aux étiquettes de données des charts selon la mise en forme de la cellule de workbook correspondante... Du type "si la cellule a un fond rouge, appliquer un fond rouge à l'étiquette". Mais je ne sais pas si c'est possible ?

    Merci encore en tout cas.

  8. #8
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    La manipulation VBA des charts rend quasiment tout possible dessus.

    Pour ton histoire de duplication, pourquoi ne fais-tu pas une copie de ta sheet tout simplement ? (à la limite, tu supprimes les cellules que tu estimes avoir en trop)

    ensuite, pour ta manipulation de couleurs, inspire-toi de l'enregistreur de macro. Il donne de bonnes idées en général mais il faut adapter de temps en temps.

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

Discussions similaires

  1. Données variables Excel vers Powerpoint
    Par lzk08 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/05/2013, 08h41
  2. Exporter données Excel vers Powerpoint
    Par n.mar1 dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 04/04/2013, 12h03
  3. Envoie données/Graphiques excel vers powerpoint
    Par meumeu73.1 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/01/2008, 15h08
  4. Importer des données excel vers outlook
    Par faayy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/10/2005, 09h30
  5. Récupérer des données Excel vers Interbase ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 20/07/2003, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo