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 211
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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
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
Rejoignez-nous