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

Powerpoint Discussion :

Copier puis coller en valeurs les données des graphiques


Sujet :

Powerpoint

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Copier puis coller en valeurs les données des graphiques
    Bonjour,

    Je suis sur PowerPoint 2013. J'aimerais mettre à jour des graphiques powerpoint. Ces derniers reposent sur des feuilles excel incorporées contenant des formules pointant vers un fichier excel extérieur; je les mets à jour par ce code que j'ai trouvé et qui marche nickel :

    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
    Sub ChangeChartData()
     
        Dim pptChart As Chart
        Dim pptChartData As ChartData
        Dim xlWorkbook As Object
        Dim sld As Slide
        Dim shp As Shape
     
        For Each sld In ActivePresentation.Slides
            For Each shp In sld.Shapes
                If shp.HasChart Then
                    Set pptChart = shp.Chart
                    Set pptChartData = pptChart.ChartData
                    pptChartData.Activate
                    Set pptWorkbook = pptChartData.Workbook
                    On Error Resume Next
                    'update first link
                    pptWorkbook.UpdateLink pptWorkbook.LinkSources(1)
                    On Error GoTo 0
                    pptWorkbook.Close True
     
                End If
            Next
        Next
     
        Set pptWorkbook = Nothing
        Set pptChartData = Nothing
        Set pptChart = Nothing
     
    End Sub
    Néanmoins le code préserve les formules dans les feuilles excel incorporées tandis que j'aimerais les remplacer par leurs valeurs pour rendre le powerpoint indépendant. J'ai essayé d'incorporer un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ChartData.Select
    Selection.Copy
    PasteSpecial Paste:=xlPasteValues
    dans la macro mais ça ne marche évidemment pas.

    Auriez-vous une idée de comment faire ?

    Merci !

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par Le_Nuss Voir le message
    Personne ? Je commence à désespérer
    Va voir là, cela devrait être utile.

    P.S. Tu n'es pas le seul à désespérer.

    P.P.S J'ai bien pris note de la question. Mais comme ce comportement d'exiger une réponse horripile plusieurs des bénévoles qui répondent, incluant moi, comme j'ai six heures de retard par rapport à l'Europe, et que là, c'est l'après-midi chez-moi, et que je vais peut-être regarder cela ce soir chez-moi, et que je reviendrai sur le forum demain après-midi, chez-moi, tu risques de désespérer encore un peu. Et puis la règle de base d'un forum des bénévoles, c'est que personne n'est obligé de savoir la réponse, personne n'est obligé de chercher la réponse et personne n'est obligé de fournir la réponse.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Hello,

    Désolé d'avoir pu paraître quelque peu insistant, ce n'était pas mon intention. Je suis en tous cas très reconnaissant qu'on prenne la peine de se pencher sur mon problème

    Pour simplifier peut-être la question, j'ai modifié le code suivant qui copie bien ce que je veux copier mais il semble que l'étape de collage des valeurs ne fonctionne pas mais je ne comprends pas pourquoi.

    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 PasteChartValues()
     
        Dim pptChart As Chart
        Dim pptChartData As ChartData
        Dim xlWorkbook As Object
        Dim sld As Slide
        Dim shp As Shape
     
        For Each sld In ActivePresentation.Slides
            For Each shp In sld.Shapes
                If shp.HasChart Then
                    Set pptChart = shp.Chart
                    Set pptChartData = pptChart.ChartData
                    pptChartData.Activate
                    Set pptWorkbook = pptChartData.Workbook
                    On Error Resume Next
                    Set pptWorksheet = pptWorkbook.Worksheets(1)
                    pptWorksheet.Range("A1:E40").Copy
                    pptWorksheet.Range("A1").PasteSpecial Paste:=xlPasteValues
                    On Error GoTo 0
                    pptWorkbook.Close True
                End If
            Next
        Next
        Set pptWorkbook = Nothing
        Set pptChartData = Nothing
        Set pptChart = Nothing
     
    End Sub

    Peut-être que quelqu'un a ne serait-ce qu'une piste pour que je puisse avancer ?

    Bon week end !

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    La première chose à faire quand on pilote une application par automation, c'est de remplacer les noms des constantes par leurs valeurs numériques
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Hello, merci pour ta réponse.

    Je suis un peu confus, quelles sont les constantes dans mon code ?

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour


    Citation Envoyé par Le_Nuss Voir le message
    Hello, merci pour ta réponse.

    Je suis un peu confus, quelles sont les constantes dans mon code ?
    xlPasteValues : même qu'il va falloir utiliser la valeur correspondante pour VBA-Powerpoint. Excel fait la copie, et PowerPoint fait le collage.

    Donc, cette ligne doit officiellement planter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pptWorksheet.Range("A1").PasteSpecial Paste:=xlPasteValues
    Et puis, dans Excel, il faut ajouter la référence à Powerpoint Objects Library.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  7. #7
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour !

    Tu as vraisemblablement mis le doigt sur mon problème.

    Sur tes deux instructions je n'ai pas compris la première et je n'ai pas trouvé grand chose sur les sites de VBA pour PowerPoint, dois-je définir xlPasteValues, ou y a-t-il une commande équivalente pour PowerPoint ?

    J'ai effectué la deuxième :

    Nom : MSPPT15OL.PNG
Affichages : 562
Taille : 10,7 Ko


    Merci beaucoup pour ton aide !

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Puisque tu colles dans Power Point, tu dois utiliser le collage spécial de PowerPoint.

    Puisque tu as ajouté la référence à PowerPoint, tu peux utiliser l'aide de PowerPoint à partir d'Excel. Clique sur PasteSpecial et appuie sur F1.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  9. #9
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Je te remercie pour ta réponse mais je n'avance pas ; la seule info qui ressemble à peu près à ce que tu essayes de me faire trouver c'est ça :

    Nom : MSPPTPASTESPECIAL.PNG
Affichages : 620
Taille : 6,4 Ko

    L'aide aurait pu au mieux m'amener sur la page View.PasteSpecial Method (PowerPoint) de Microsoft Office, qui m'a un moment fait croire que ce bout de code marcherait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    pptWorksheet.Range("A1:E40").Copy
                    pptWorksheet.Range("A1").PasteSpecial DataType:=ppPasteText, _
                    Link:=msoFalse
    Mais non.

  10. #10
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai pas réussi à coller directement en une seule fois une plage de cellules d'Excel vers PowerPoint; que ce soit avec une macro Excel ou une macro PowerPoint.
    Finalement, j'ai complété la macro en PowerPoint par une double boucle avec copie cellule par cellule. Ce que je comprends de l'histoire, c'est que chaque cellule d'un tableau PowerPoint doit être considérée comme une Shape et cette Shape là a une "shape implicite" pour un TextRange qui contient la donnée elle-même.

    Quant à savoir comment faire un graphique en PowerPoint, à partir d'un tableau en PowerPoint; je ne suis pas rendu là.

    P.S. Pour ceux que cela intéresse; le gestionnaire de l'aide de PowerPoint 2010 es buggué. Quand la référence à Excel est ajoutée à un projet PPT, il est capable de dire que la rubrique est dans l'aide d'Excel. Jusque là, c'est normal. Le problème, c'est que l'imbécile n'est pas capable d'ouvrir l'aide de VBA-Excel.
    Fichiers attachés Fichiers attachés
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  11. #11
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Hello,

    Merci beaucoup pour tout le temps que tu as consacré à mon problème. Tu sembles donc affirmer qu'il faut passer par un tableau powerpoint pour faire/modifier les données d'un graphe ? Tout ça m'a l'air bien plus compliqué que prévu.

  12. #12
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par Le_Nuss Voir le message
    Hello,

    Tu sembles donc affirmer qu'il faut passer par un tableau powerpoint pour faire/modifier les données d'un graphe ?
    Du moins, je n'ai pas trouvé d'autre façon.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  13. #13
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Lorsque j'ai opté pour cette méthode ça me semblait plutôt simple et je pensais pouvoir m'en sortir en glanant des bouts de code sur le web. J'ai aussi essayé une commande du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PPT.ActivePresentation.Slides(i).Shapes(s).LinkFormat.BreakLink
    mais je n'arrive pas à comprendre pourquoi ça ne marche pas ; ou du moins je n'arrive pas à en faire un code qui marche alors que ça semble fonctionner pour d'autres .

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/12/2011, 12h22
  2. [XL-2000] Comment copier puis coller x fois ? (x = valeur de la cellule)
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/03/2010, 13h32
  3. Réponses: 2
    Dernier message: 05/02/2007, 10h19
  4. Construire les données des vertices avec des byte
    Par mister3957 dans le forum DirectX
    Réponses: 2
    Dernier message: 27/08/2006, 14h19
  5. Filtre sur les données des 3 derniers mois?
    Par Arkalys dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 09h02

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