Remplacer formules par leurs valeurs dans les graphiques

Fermé
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015 - 18 févr. 2015 à 13:53
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015 - 23 févr. 2015 à 19:46
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 :

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 :


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 !


A voir également:

5 réponses

m@rina Messages postés 21200 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 20 décembre 2024 11 370
18 févr. 2015 à 14:41
Bonjour,

En gros, tu incorpores un fichier Excel lui-même lié à un autre fichier Excel.
Et tu utilises une macro pour la mise à jour.
Jusque là OK

Mais après tu dis "le code préserve les formules dans les feuilles excel incorporées "... Ben oui, c'est le principe de la liaison. Si tu remplaces les formules par leur valeur dans le classeur incorporé, cela signifie qu'il ne sera plus lié.

Donc,
soit c'est lié et tu peux faire tes mises à jour.
soit ça ne l'est pas et les mises ne sont plus faisable.

De plus, je n'ai pas compris ce qui est lié dans le classeur incorporé : le tableau de chiffres ou bien le graph ?

Mais peut être n'ai-je rien compris du tout ! :s

m@rina
0
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015
18 févr. 2015 à 15:00
Bonjour, voici le process :

1) Mon ppt_v1 est lié à l'excel

2) Je mets à jour ppt_v1 et le "délie" grâce à la macro, puis enregistre sous "ppt_semaine1"

3) J'envoie ppt_semaine1

4) Dans une semaine, je rouvre ppt_v1, refais la même chose et envoie ppt_semaine2
0
m@rina Messages postés 21200 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 20 décembre 2024 11 370
19 févr. 2015 à 16:44
Bonjour

C'est plus clair.
Néanmoins, je ne vois pas que ta macro ôte les liens. Je vois juste qu'elle fait une mise à jour.

Cela étant, je ne procéderais pas de cette façon. Voici comment je ferais :

- Un classeur Excel dans lequel tu travailles, tu entre tes données et tu fais tes graphs, etc.
- Un second classeur Excel : lorsque le premier est fait, j'enregistre et j'enregistre aussi sous le nom du second classeur, donc en l'écrasant. Le nom de ce classeur ne bougera donc pas.
Je crée une macro qui enlève toutes les formules de classeur. Et à chaque enregistrement, je lance la macro.
- Le fichier PowerPoint qui est lié à ce second classeur Excel sans formules. Les liaisons dans le fichier PowerPoint seront mis à jour automatiquement, puisque dernier sera toujours lié avec le même classeur Excel.

Mais tu parlais d'incorporation, il n'y en a pas, que des liaisons.

m@rina
0
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015
19 févr. 2015 à 17:09
Hello, merci pour la réponse.

Le code actuel ne fait que mettre à jour en effet; j'aimerais qu'il ôte les liens aussi (donc pour chaque classeur incorporé, copier le contenu, et coller au même endroit mais en valeur: je n'arrive pas à traduire ces instructions en vba).

Concernant ta méhode : tu me proposes un powerpoint lié à un Excel sans formule. Mais je ne veux pas lié mon powerpoint à un excel, c'est justement la raison de ma démarche. Je veux un powerpoint totalement indépendant que je peux envoyer seul et dont les données peuvent être modifiées par mon destinataire.
0
m@rina Messages postés 21200 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 20 décembre 2024 11 370
19 févr. 2015 à 20:14
Si tu souhaites que le destinataire puisse modifier les données, il n'y a pas 36000 solutions. Il y en a deux :
1) On incorpore le fichier Excel. Cela étant, si tu as 20 graphs, tu auras le droit d'incorporer les 20 classeurs... faire attention au poids.
2) On lie.

La première solution est plus pratique mais il faut gérer le poids du fichier, la seconde oblige de joindre systématiquement le fichier Excel.

Que ce soit l'une ou l'autre des solutions, ta solution de macro n'ira pas. La lmacro peut mettre à jour, peut supprimer les liaisons, mais ne pourra transformer une liaison en incorporation, parce que ce n'est pas du tout la même démarche.

m@rina
0
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015 > m@rina Messages postés 21200 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 20 décembre 2024
20 févr. 2015 à 09:59
Merci M@rina mais ce n'est pas exactement ce que je veux :

Je veux que, pour chaque graphe, dans l'excel incorporé, les formules soient remplacées par leurs valeurs.
0
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015
20 févr. 2015 à 13:49
Il semblerait que dans mon code, la ligne en gras (correspondant au collage des valeurs) ne marche pas, mais je ne sais pas pourquoi


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
0
m@rina Messages postés 21200 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 20 décembre 2024 11 370 > Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015
20 févr. 2015 à 15:56
Bonjour,

C'est surtout que ton objet (shp) n'est pas considéré comme un diagramme (HasChat) qui est un objet créé depuis PowerPoint (HasShape n'est pas valable pour des objets liés ou incorporés).
Donc ta macro ne fait rien.

S'il a été inséré dans PPT via un collage (liaison ou incorporation), c'est un Shape de type OLEOject.

Exemple pour un objet lié :
If shp.Type= msoLinkedOLEObject Then


Exemple pour un objet incorporé :
If shp.Type= msoEmbeddedOLEObject Then


m@rina
0
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015
23 févr. 2015 à 19:18
Bon ok je viens de comprendre.

1) J'ai créé mes graphes sur powerpoint
2) Dans mon powerpoint actuel, les données de mes graphes sont des résultats de formules
3) Ces formules contiennent le nom d'un fichier excel externe à mon powerpoint
4) J'aimerais que pour chacun des graphes, la macro remplace les formules derrière le graphe par leurs valeurs

Je m'excuse d'avoir parlé d'incorporation de liaison, ces mots ont en effet un autre sens dans le lexique de MS

Néanmois: si c'est plus simple d'aboutir au résultat que je veux (update automatique de nombreux graphes à partir d'un excel, possibilité pour mon destinataire de ne recevoir que le powerpoint et d'être quand même capable de modifier la donnée), je peux passer à une autre méthode !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le_Nuss Messages postés 11 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 23 février 2015
23 févr. 2015 à 19:46
J'ai passé des heures dessus ! Tout ce que je trouve sur le net, c'est justement le cas de fichier excel incorporés ou liés. Ce que je ne comprends vraiment pas, c'est pourquoi les commandes que je rajoute dans ma boucle (la boucle est bien exécutée puisque la condition est vérifiée) ne marchent pas:

J'ai essayé en copiant tout et en collant juste les valeurs
J'ai essayé un ActiveWorkbook.BreakLink

Bref toute sorte de commandes qui marchent nickel quand j'exécute ma macro dans excel et qui ne marche pas dans mon powerpoint !!
0