VBA : Problème de copie de cellules d'excel à powerpoint

Résolu
alan.oze
Messages postés
2
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
13 décembre 2016
- 12 déc. 2016 à 17:27
alan.oze
Messages postés
2
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
13 décembre 2016
- 13 déc. 2016 à 15:27
Bonjour,
Bonjour à tous et à toutes,
Je m'excuse si ma question a déjà été posée mais après avoir parcouru le forum en long, en large et en travers je n'ai toujours pas trouvé de réponses à ma question.
En effet, j'essaye d'automatiser le passage de chiffres d'une feuille excel à un powerpoint. J'ai créé un Template spécialement pour l'occasion, en ordonnant les shapes pour les faire correspondre à chacune des cellules sur mon excel.
Tout fonctionne à merveille sauf que : les données présentes sur mon excel sont des pourcentages, et lorsqu'elles passent sur le ppt elles s'affichent en nombre à virgules (je m'explique, si j'ai 100% dans la cellule A1 je retrouve 1 dans la shape que j'ai assigné, si j'ai 50% dans la cellule A2, je retrouve 0,5 dans la shape assignée, etc). Je viens de passer la journée sur le problème et je ne sais toujours pas le résoudre, étant extrêmement novice en VBA et n'ayant utilisé que des bouts de code pour créer la mienne.

Sub ModifierPresentationExistante()
Dim PptApp As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation

Set PptApp = CreateObject("Powerpoint.Application")
PptApp.Visible = True

Set PptDoc = PptApp.Presentations.Open("templatecréépourl'occasion")

With PptDoc

'insère le contenu de la cellule B10 dans la 8eme zone de texte,
'de la 3eme slide
.Slides(3).Shapes(8).TextFrame.TextRange.Text = Range("B10")
.Slides(3).Shapes(9).TextFrame.TextRange.Text = Range("D10")
.Slides(3).Shapes(10).TextFrame.TextRange.Text = Range("E10")
.Slides(3).Shapes(11).TextFrame.TextRange.Text = Range("F10")
.Slides(3).Shapes(12).TextFrame.TextRange.Text = Range("G10")
.Slides(3).Shapes(13).TextFrame.TextRange.Text = Range("C10")
.Slides(3).Shapes(14).TextFrame.TextRange.Text = Range("B12")
.Slides(3).Shapes(15).TextFrame.TextRange.Text = Range("D12")
.Slides(3).Shapes(16).TextFrame.TextRange.Text = Range("E12")
.Slides(3).Shapes(17).TextFrame.TextRange.Text = Range("F12")
.Slides(3).Shapes(18).TextFrame.TextRange.Text = Range("G12")
.Slides(3).Shapes(19).TextFrame.TextRange.Text = Range("C12")
.Slides(3).Shapes(20).TextFrame.TextRange.Text = Range("B14")
.Slides(3).Shapes(21).TextFrame.TextRange.Text = Range("D14")
.Slides(3).Shapes(22).TextFrame.TextRange.Text = Range("E14")
.Slides(3).Shapes(23).TextFrame.TextRange.Text = Range("F14")
.Slides(3).Shapes(24).TextFrame.TextRange.Text = Range("G14")
.Slides(3).Shapes(25).TextFrame.TextRange.Text = Range("C14")
.Slides(3).Shapes(26).TextFrame.TextRange.Text = Range("B22")
.Slides(3).Shapes(27).TextFrame.TextRange.Text = Range("D22")
.Slides(3).Shapes(28).TextFrame.TextRange.Text = Range("E22")
.Slides(3).Shapes(29).TextFrame.TextRange.Text = Range("F22")
.Slides(3).Shapes(30).TextFrame.TextRange.Text = Range("G22")
.Slides(3).Shapes(31).TextFrame.TextRange.Text = Range("C22")
.Slides(3).Shapes(32).TextFrame.TextRange.Text = Range("B16")
.Slides(3).Shapes(33).TextFrame.TextRange.Text = Range("D16")
.Slides(3).Shapes(34).TextFrame.TextRange.Text = Range("E16")
.Slides(3).Shapes(35).TextFrame.TextRange.Text = Range("F16")
.Slides(3).Shapes(36).TextFrame.TextRange.Text = Range("G16")
.Slides(3).Shapes(37).TextFrame.TextRange.Text = Range("C16")
.Slides(3).Shapes(38).TextFrame.TextRange.Text = Range("B18")
.Slides(3).Shapes(39).TextFrame.TextRange.Text = Range("D18")
.Slides(3).Shapes(40).TextFrame.TextRange.Text = Range("E18")
.Slides(3).Shapes(41).TextFrame.TextRange.Text = Range("F18")
.Slides(3).Shapes(42).TextFrame.TextRange.Text = Range("G18")
.Slides(3).Shapes(43).TextFrame.TextRange.Text = Range("C18")
.Slides(3).Shapes(44).TextFrame.TextRange.Text = Range("B20")
.Slides(3).Shapes(45).TextFrame.TextRange.Text = Range("D20")
.Slides(3).Shapes(46).TextFrame.TextRange.Text = Range("E20")
.Slides(3).Shapes(47).TextFrame.TextRange.Text = Range("F20")
.Slides(3).Shapes(48).TextFrame.TextRange.Text = Range("G20")
.Slides(3).Shapes(49).TextFrame.TextRange.Text = Range("C20")
End With
End Sub


Ci-joint un bout de mon code pour vous aider peut-être à y voir plus clair.
En vous remerciant d'avance,
Alan

3 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
12 déc. 2016 à 18:16
Bonjour,
- Ne pas confondre ce qui est affiché dans une cellule (résultat d'un format) avec la valeur en mémoire
- Ce n'est par ailleurs pas une bonne habitude de ne pas préciser la propriété utilisée d'une cellule. Par défaut, VBA décide que c'est la propriété Value.
- si tu veux extraire exactement ce qui est affiché, précise donc la propriété Text.
Exemple :
.Slides(3).Shapes(8).TextFrame.TextRange.Text = Range("B10").Text

0
vb95
Messages postés
2778
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
5 juillet 2022
151
12 déc. 2016 à 19:01
Bonjour
Pourquoi ne pas inclure le
.Slides(3)
dans le With

With PptDoc.Slides(3)

'insère le contenu de la cellule B10 dans la 8eme zone de texte,
'de la 3eme slide
.Shapes(8).TextFrame.TextRange.Text = Range("B10")
.Shapes(9).TextFrame.TextRange.Text = Range("D10")
.Shapes(10).TextFrame.TextRange.Text = Range("E10")
.Shapes(11).TextFrame.TextRange.Text = Range("F10")
.Shapes(12).TextFrame.TextRange.Text = Range("G10")
.Shapes(13).TextFrame.TextRange.Text = Range("C10")
.Shapes(14).TextFrame.TextRange.Text = Range("B12")
.Shapes(15).TextFrame.TextRange.Text = Range("D12")
.Shapes(16).TextFrame.TextRange.Text = Range("E12")
.Shapes(17).TextFrame.TextRange.Text = Range("F12")
.Shapes(18).TextFrame.TextRange.Text = Range("G12")
.Shapes(19).TextFrame.TextRange.Text = Range("C12")
.Shapes(20).TextFrame.TextRange.Text = Range("B14")
.Shapes(21).TextFrame.TextRange.Text = Range("D14")
.Shapes(22).TextFrame.TextRange.Text = Range("E14")
.Shapes(23).TextFrame.TextRange.Text = Range("F14")
.Shapes(24).TextFrame.TextRange.Text = Range("G14")
.Shapes(25).TextFrame.TextRange.Text = Range("C14")
.Shapes(26).TextFrame.TextRange.Text = Range("B22")
.Shapes(27).TextFrame.TextRange.Text = Range("D22")
.Shapes(28).TextFrame.TextRange.Text = Range("E22")
.Shapes(29).TextFrame.TextRange.Text = Range("F22")
.Shapes(30).TextFrame.TextRange.Text = Range("G22")
.Shapes(31).TextFrame.TextRange.Text = Range("C22")
.Shapes(32).TextFrame.TextRange.Text = Range("B16")
.Shapes(33).TextFrame.TextRange.Text = Range("D16")
.Shapes(34).TextFrame.TextRange.Text = Range("E16")
.Shapes(35).TextFrame.TextRange.Text = Range("F16")
.Shapes(36).TextFrame.TextRange.Text = Range("G16")
.Shapes(37).TextFrame.TextRange.Text = Range("C16")
.Shapes(38).TextFrame.TextRange.Text = Range("B18")
.Shapes(39).TextFrame.TextRange.Text = Range("D18")
.Shapes(40).TextFrame.TextRange.Text = Range("E18")
.Shapes(41).TextFrame.TextRange.Text = Range("F18")
.Shapes(42).TextFrame.TextRange.Text = Range("G18")
.Shapes(43).TextFrame.TextRange.Text = Range("C18")
.Shapes(44).TextFrame.TextRange.Text = Range("B20")
.Shapes(45).TextFrame.TextRange.Text = Range("D20")
.Shapes(46).TextFrame.TextRange.Text = Range("E20")
.Shapes(47).TextFrame.TextRange.Text = Range("F20")
.Shapes(48).TextFrame.TextRange.Text = Range("G20")
.Shapes(49).TextFrame.TextRange.Text = Range("C20")
End With


un salut amical à Ucfoutu
0
alan.oze
Messages postés
2
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
13 décembre 2016

13 déc. 2016 à 15:27
Merci beaucoup à tous les deux d'avoir pris le temps de m'aider !

J'ai fais les changements que vous m'avez conseillé et tout fonctionne à merveille.

Merci encore !
0