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

Macros et VBA Excel Discussion :

Envoie données/Graphiques excel vers powerpoint


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut Envoie données/Graphiques excel vers powerpoint
    Bonjour à tous,

    J'aimerais pouvoir transférer des tableaux et des graphiques Excel vers powerpoint dans le but de pouvoir les projeter. Bien sur j'ai la solution de faire des collages Spéciaux avec liaisons, mais le but est d'avoir des fichiers sans liaisons.

    Est ce possible ? si oui peut on m'aider avec un exemple que je pourrais adapter par la suite, par avance je vous en remercie.

    Tout mes tableaux seront nommés, actuellement le seul "hic" est pour les grahiques, car lorsque je les selectionnes (en enregistrement) dans la macro, il me nomme le graphique en "graphique 1".

    je reste dispo pour informations complémentaires.



    meumeu73.1

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    Bonjour c'est tout à fait possible, voici 2 bouts de code :


    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
    Set ShpGraph = ppSlide.Shapes.AddOLEObject(ClassName:="MSGraph.Chart", Link:=msoFalse)
        Set ObjGraph = ShpGraph.OLEFormat.Object
        ObjGraph.ChartType = xlDoughnut
     
        'Copie Données
        Set ObjDataSht = ObjGraph.Application.DataSheet
        ObjDataSht.Cells.Clear
        With ExpSht
            For A = 2 To 5
                ObjDataSht.Cells(2, A) = VentilDiffSht.Cells(LineRéfVentil + 2, A)
            Next A
            ObjDataSht.Cells(1, 2) = "Pim"
            ObjDataSht.Cells(1, 3) = "Pam"
            ObjDataSht.Cells(1, 4) = "Poum"
            ObjDataSht.Cells(1, 5) = "Pom"
        End With
     
        'Graphe
        With ObjGraph
            .PlotArea.Border.LineStyle = 0
            .HasLegend = True
            .Legend.Font.Size = 16
            .Legend.Left = .Legend.Left - 40
            .Legend.Border.LineStyle = xlNone
            For A = 1 To 4
                .SeriesCollection(1).Points(A).Border.LineStyle = xlNone
                .SeriesCollection(1).Points(A).ApplyDataLabels AutoText:=True, ShowPercentage:=True
            Next A
            .SeriesCollection(1).DataLabels.Font.Size = 16
            .SeriesCollection(1).DataLabels.Font.ColorIndex = 2
     
            'Très important
            .Application.Update
        End With

    et


    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
    Set ShpGraph = ppSlide.Shapes.AddOLEObject(ClassName:="MSGraph.Chart", Link:=msoFalse)
        Set ObjGraph = ShpGraph.OLEFormat.Object
        ObjGraph.ChartType = xlColumnClustered
     
        '...
        '...
     
        'Graphe
        With ObjGraph
            .HasTitle = True
            .ChartTitle.Text = "Mon Graphe"
            .ChartTitle.Font.Size = 20
            .ChartTitle.Font.Italic = True
            .HasLegend = False
            .Axes(xlCategory).HasMajorGridlines = False
            .Axes(xlCategory).Border.LineStyle = xlNone
            .Axes(xlCategory).TickLabels.Font.FontStyle = "Normal"
            .Axes(xlCategory).TickLabels.Font.Size = 16
            .Axes(xlValue).Border.LineStyle = xlNone
            .Axes(xlValue).HasMajorGridlines = False
            .HasAxis(xlValue, xlPrimary) = False
            .SeriesCollection(1).ApplyDataLabels AutoText:=True, ShowValue:=True
            .SeriesCollection(1).Border.LineStyle = xlNone
            For A = 1 To 12
                If ObjDataSht.Cells(2, A + 1) > 100 Then
                    .SeriesCollection(1).Points(A).Interior.ColorIndex = 18
                Else
                    .SeriesCollection(1).Points(A).Interior.ColorIndex = 17
                End If
            Next A
            .SeriesCollection(1).DataLabels.Font.Size = 16
            .ChartGroups(1).GapWidth = 100
            .PlotArea.Border.LineStyle = xlNone
            .PlotArea.Height = .PlotArea.Height * 0.85
            .PlotArea.Top = 100
            .Application.Update
        End With
     
        'Location Graph
        With ShpGraph
            .ScaleWidth 0.48, msoFalse, msoScaleFromBottomRight
            .ScaleHeight 0.48, msoFalse, msoScaleFromBottomRight
            If BoolAud = False Then .IncrementLeft 110
            .IncrementTop 180
        End With

    Si tu veux de l'aide plus spécifique, n'hésite pas j'ai fait des 10aines de codes sur PPT.

    Cdt,

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    merci, mais en fait je travaille uniquement sur excel à l'aide de tableau croisé dynamique que je fige et ensuite j'envoie les tableauw et les graphiques sur powerpoint uniquement pour faire une présentation.

    j'avais un début de code pour ça :

    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
    Sub TestPowerPoint()
     
      ' On déclare une variable de type Application PowerPoint
      Dim ppt As PowerPoint.Application
      ' On crée maintenant un objet Presentation
      Dim Pres As PowerPoint.Presentation
      Set ppt = CreateObject("PowerPoint.Application")
      ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de fichier (Erreur)
     
      ' Et on lui dit de quelle présentation il s'agit :
      Set Pres = ppt.Presentations.Open(Filename:="C:\Mes Documents\MaPresentation.ppt")
     
      ' On active, sélectionne et copie le Graphique Graphique 1 de Excel :
      ActiveSheet.ChartObjects("Graphique 1").Activate
      ActiveChart.ChartArea.Select
      ActiveChart.ChartArea.Copy
     
      ' Et on le colle dans la première diapositive de la présentation :
      ppt.Presentations(ppt.Presentations.Count).Slides(1).Shapes.PasteSpecial ppPasteMetafilePicture
     
      ' On enregistre la présentation PowerPoint :
      Pres.Save
     
      ' Et on quitte PowerPoint proprement :
      ppt.Quit
      Set ppt = Nothing
     
    End Sub
    que je n'ai pas encore testé, car je n'avais pas la solution pour nommer mon graphique, maintenant j'ai trouvé comment nommer mon grahique donc je vais pouvoir testé.

    http://www.developpez.net/forums/sho...mmer+graphique

    Je n'ai pas approndi le code que tu m'as envoyé, mais comme je ne suis pas un e bête niveau code, il m'a semblé que c'était une macro uniquement sur Powerpoint ? si je me trompe dis moi.

    Encore merci, pour ton aide.

    meumeu73.1

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    En fait, c'est une graphique ppt, dont les données sont issues de excel.
    Ca te donne un vrai graphe dans ppt, totalement indépendant de la feuille Excel, puisque les données sont enregistrées dans le graphe ppt.

    Teste le fichier suivant en prenant soi d'activer la bibliothèque ppt dans vb.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Je viens de tester la macro, il est vrai que c'est pas mal non plus ce type de transfert, d'ailleurs je ne demande si je ne vais pas l'utiliser quand même, car c'est rapide et efficace.

    peut on faire la même chose pour envoyer du texte ou meme un tableau ?

    super et merci d'avoir insisté en m'envoyant l'exemple.

    bonne fin de journée.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    ... pour le texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set ppObjShp = ppSlide.Shapes.AddLabel(msoTextOrientationHorizontal, 63, 10, 125, 30)
    With ppObjShp.TextFrame.TextRange
         .Text = MyWbk.Worksheets(1).Cells(1, 1)
         .Font.Size = 20
         .Font.Bold = True
         .Font.Italic = True
    End With
    Pour les tableaux, je copie-colle bêtement.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    merci beaucoup

    bonne fin de journée.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par House MD Voir le message

    Si tu veux de l'aide plus spécifique, n'hésite pas j'ai fait des 10aines de codes sur PPT.

    Cdt,
    Re bonjour,

    Si tu as d'autres exemples sur les nuages de points, les cammenbert, les courbes, etc...., la façon dont on positionne ou l'on veut le graphe, je suis preneur.

    par avance merci, bonne après midi.

    meumeu73.1

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    Nuage de points :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjGraph.ChartType = xlXYScatter
    Camembert plat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjGraph.ChartType = xlPie
    Camembert 3D éclaté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjGraph.ChartType = xl3DPieExploded
    Sinon, tu le fais dans Excel en mode "enregistrement de macro" : les termes sont les mêmes pour les noms de graphes.

    Attention, en fonction du type de graphe, certaines propriété ne pourront pas toujours être utilisées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjGraph.Axes(xlValue).Border.LineStyle = xlNone
    par exemple va faire planter avec les camembert : il suffit d'enlever ces paramètres.


    Pour modifier l'emplacement + taille des graphes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With ShpGraph
        .ScaleWidth 0.6, msoFalse, msoScaleFromTopLeft  'réduction à 60%
        .ScaleHeight 0.6, msoFalse, msoScaleFromBottomRight 
        .IncrementTop 160
        .IncrementLeft -20
    End With
    Ces trucs là, on les met tout à la fin, en général, après le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjGraph.Application.Update
    Tu peux aussi utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ObjGraph.PlotArea.Height = .PlotArea.Height * 0.85
    ObjGraph.PlotArea.Top = 100
    Pour modifier la taille de la zone de graphique elle-même, puis sa position, dans la shape de graphe.

    A noter que ca, on le met avant le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjGraph.Application.Update

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    extra merci pour les infos, je vais suivre tes conseils avec l'enregistreur de macro d'excel. bonne fin de journée.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Aurais tu un exemple avec lequel, je peux ouvrir une présentation déjà créer et choisir le slide que je désire pour insérer le graph de mon choix ?


    merci

    bonne journée

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    la pièce jointe,

    je veux par exemple avec ce tableau avoir un histogramme avec les hommes et le cumul uniquement, les femmes je les exclus pour le moment.

    merci.
    Fichiers attachés Fichiers attachés

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    Le fait que les colonnes ne soient pas accollées ne pose pas de problème attendu que pour récupérer les données, tu ne sélectionne pas une zone (ne jamais faire ca) mais tu récupères chaque cellule une par une.

    Ce qui donne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set ObjDataSht = ObjGraph.Application.DataSheet
    ObjDataSht.Cells.Clear
     
    for B=1 to 2
       for A=2 to 6
          ObjDataSht.Cells(B, A)=MySht.cells(A,B)
       next A
    next B
    for A=2 to 6
       ObjDataSht.Cells(3, A)=MySht.cells(A,4)
    next A

    Ou qqchose d'approchant.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    cela me va très bien, encore un grand merci.

+ Répondre à la discussion
Cette discussion est résolue.

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. [XL-2010] Envois graphiques excel vers word vba
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/03/2013, 16h44
  3. [XL-2000] Envoi données d'Excel vers Word
    Par laurentdusseau dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/10/2010, 14h32
  4. envoie données d'excel vers word
    Par Linono dans le forum Excel
    Réponses: 1
    Dernier message: 07/09/2009, 22h49
  5. Graphiques excel vers powerpoint en liaison
    Par lecter85 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/11/2008, 11h56

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