Comment créer des formes auto dans PPT à partir de valeurs dans Excel ?

HibouTheOwl Messages postés 1 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 24 août 2010 - 24 août 2010 à 14:35
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 24 août 2010 à 16:25
Bonjour,

Dans PowerPoint, j'aimerais créer une série de formes automatiques (des rectangles, p. ex.) dont la position et la taille (dans la diapo PPT) sont des valeurs numériques présentes dans un tableau Excel :
- en colonne A, le positionnement vertical de chaque rectangle à créer (p. ex. à 10 cm du haut de la diapo)
- en colonne B, le positionnement horizontal (p. ex. 5.5 cm depuis la marge gauche)
- en colonne C, la longueur de chaque rectangle à créer (p. ex. 3.4 cm)
- en colonne D, la hauteur (p. ex. 0.55 cm)
+ éventuellement d'autres paramètres dans les colonnes suivantes, telles que l'épaisseur du trait, la couleur de trait, la couleur de remplissage, etc...

A l'aide d'une macro (de préférence dans PPT), j'aimerais donc que soit créée, pour chaque ligne de mon tableau Excel contenant des valeurs, une forme automatique dans PowerPoint. La macro doit donc déterminer combien de formes automatiques sont à créer, puis boucler jusqu'au bout du tableau en lisant les valeurs des différentes colonnes.

L'instruction de création dans PPT d'une forme auto de type flèche droite est apparemment :
ActiveWindow.Selection.SlideRange.Shapes.AddShape(msoShapeRightArrow, 173.38, 74.38, 68#, 39.62).Select
où les 4 valeurs numériques correspondent à la position et la taille.
Les autres paramètres pourraient être définis immédiatement à la suite avec une instruction du type :
With ActiveWindow.Selection.ShapeRange
.Line.Weight = 0.25
.Line.Visible = msoTrue
.Line.Style = msoLineSingle
.Fill.Transparency = 0#
.Fill.ForeColor.RGB = RGB(204, 255, 153)
.Fill.Solid
End With
Par contre je ne sais pas comment aller interroger le contenu d'un fichier Excel, et comment utiliser les valeurs lues à travers des variables dans PPT.
Quelqu'un pourrait-il m'aider sur la programmation ?

Merci d'avance.

2 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
24 août 2010 à 14:40
Bonjour,

Attention à la catégorie dans laquelles tu postes, vb6 n'est pas vba, mais ne reposte pas un admin bienveillant déplacer le topic dans le bon forum.

Sinon pour ta demande, dans la suite office tu as un outil très pratique, l'enregistreur de macros, qui te permet de récupérer le code en fonction de ce qui est fait par l'utilisateur donc utilises-le.

Et l'ouverture et la lecture de fichiers excel est un sujet récurrent sur le site, avec une petite recherche tu trouveras plein d'exemples pour t'en inspirer

L'expérience, c'est une connerie par jour, mais jamais la même..
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 août 2010 à 16:25
Bonjour,
Pour démarrer, voici un module qui met un graphique Excel et le texte contenu en A1 dans une présentation PPT. A partir de là vous pouvez améliorer à votre convenance.
Inserer un graphique sur la feuille Excel.
Mettez du texte en A1
Ensuite mettre dans un module ce code:

'Allez dans Outils et cochez la référence Microsoft PowerPoint 11.0 Object Library
Sub NouvellePresentation()

Dim PptDoc As PowerPoint.Presentation
Dim Diapo As PowerPoint.Slide
Dim Sh As PowerPoint.Shape
Dim Cs1 As ColorScheme
Dim NbShpe As Integer

Dim PptApp As Variant
Set PptApp = CreateObject("Powerpoint.Application")
Set PptDoc = PptApp.Presentations.Add

With PptDoc

'--- Ajoute un Slide
.Slides.Add Index:=1, Layout:=ppLayoutBlank
'Crée une zone de texte (AddLabel)
Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=150, Height:=60)
'insère la valeur de la Cellule A1 dans une zone de texte
Sh.TextFrame.TextRange.Text = Range("A1")
'Modifie la couleur du texte
Sh.TextFrame.TextRange.Font.Color = RGB(255, 100, 255)


'--- Ajoute un nouveau slide et le positionner en 2eme position
Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)

'copie le 1er graphique contenu dans la feuille Excel active
ActiveSheet.ChartObjects(1).Copy
'collage dans la 2eme diapositive
Diapo.Shapes.Paste

'Compte le nombre de shapes dans la diapositive:
'le dernier objet inséré correspond à l'index le plus élevé
NbShpe = Diapo.Shapes.Count

'Renomme et met en forme l'objet collé
With Diapo.Shapes(NbShpe)
.Name = "monGraph" 'personnalise le nom
.Left = 150 'définit la position horizontale dans le slide
.Top = 100 'définit la position verticale dans le slide
.Height = 300 'hauteur
.Width = 400 'largeur
End With


'--- Modifie la couleur de fond dans les différents Slides
Set Cs1 = .ColorSchemes(3)
Cs1.Colors(ppBackground).RGB = RGB(UserForm1.TextBox1, UserForm1.TextBox2, UserForm1.TextBox3)
.SlideMaster.ColorScheme = Cs1
End With

'Sauvegarde la présentation
'dans le meme répertoire que le classeur excel contenant la macro.
PptDoc.SaveAs FileName:=ThisWorkbook.Path & "" & "NouvellePresentation_graph.ppt"
'ferme la presentation
PptDoc.Close
'ferme powerpoint
PptApp.Quit

MsgBox "Opération terminée."
End Sub

Pour appeler la macro: NouvellePresentation
Vous avez toutes les commentaires necessaires
Bonne programmation
@+
Le Pivert
0
Rejoignez-nous