Comment créer des formes auto dans PPT à partir de valeurs dans Excel ?
HibouTheOwl
Messages postés1Date d'inscriptionmardi 24 août 2010StatutMembreDernière intervention24 août 2010
-
24 août 2010 à 14:35
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 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 ?
lolokun
Messages postés1241Date d'inscriptionmardi 10 octobre 2006StatutMembreDernière intervention27 août 20137 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..
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 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