VBA : Problème de copie de cellules d'excel à powerpoint [Résolu]

alan.oze 2 Messages postés lundi 12 décembre 2016Date d'inscription 13 décembre 2016 Dernière intervention - 12 déc. 2016 à 17:27 - Dernière réponse : alan.oze 2 Messages postés lundi 12 décembre 2016Date d'inscription 13 décembre 2016 Dernière intervention
- 13 déc. 2016 à 15:27
VBA Office (Excel, Word ...) Posez votre question Signaler Répondre au sujet
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
Afficher la suite 

3 réponses

Répondre au sujet
ucfoutu 18021 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 12 déc. 2016 à 18:16
0
Utile
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

Commenter la réponse de ucfoutu
vb95 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 12 déc. 2016 à 19:01
0
Utile
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
Commenter la réponse de vb95
alan.oze 2 Messages postés lundi 12 décembre 2016Date d'inscription 13 décembre 2016 Dernière intervention - 13 déc. 2016 à 15:27
0
Utile
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 !
Commenter la réponse de alan.oze

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.