Nommer des objets sous Powerpoint

Nommer des objets sous Powerpoint - VB/VBA/VBS - Programmation

Marsh Posté le 16-06-2004 à 10:07:04    

Bonjour je souhaite nommer les objets sous power point pour pouvoir les utiliser sous vb, quelqu'un sait comment faire?
 
Merci d'avance pour votre aide.

Reply

Marsh Posté le 16-06-2004 à 10:07:04   

Reply

Marsh Posté le 18-06-2004 à 09:49:49    

J'ai fait un vert vert, et je l'ai colorié en rouge :
 
Sub Colore()
    ActivePresentation.Slides(1).Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)
End Sub
 
Je ne sais pas si tu savais déjà faire ca. Pour le nom lui-même, je n'ai pas trouvé non plus.  
Je vais chercher un peu.

Reply

Marsh Posté le 18-06-2004 à 10:04:06    

J'avais fait un rectangle vert...
 
Dans l'aide ils donnent l'impression aue les objets créés dans PowerPoint prennent automatiquement le nom ''Type de forme numero''.  
Un exemple pour retourner rectangle 1 :
Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Flip msoFlipHorizontal
myDocument.Shapes("Rectangle 1" ).Flip msoFlipHorizontal
 
Mais en VBA on peut créer des objets et leur donner un nom explicite.
Pour créer un carré rouge avec comme nom ''carre rouge'' et le placer :
Set myDocument = ActivePresentation.Slides(1)
With myDocument.Shapes.AddShape(Type:=msoShapeRectangle, _
        Top:=144, Left:=144, Width:=72, Height:=72)
    .Name = "Carre rouge"
    .Fill.ForeColor.RGB = RGB(255, 0, 0)
End With
 
Mais je ne vois pas de moyen pour créer une shape dans Power Point, la nommer, puis la manipuler avec VBA.
 
Bonne journée.

Reply

Marsh Posté le 14-03-2008 à 14:07:26    

up !!!
 
suis egalement interessé pour savoir comment nommer un objet sous PPT :
 
genre je dessine mon rectangle, je le coloris en vert... puis je lui donne un nom "rectangle_vert" et apres, en vba je peux jouer avec (le tourner, changer la couleur etc...)
 
merci d'avance !


Message édité par jay-jay69 le 14-03-2008 à 17:17:01
Reply

Marsh Posté le 07-07-2008 à 14:06:41    

Bonjour
 
En effet certains composants n'ont pas un nom d'instance que l'on peut manipuler avec son code VB.
 
Il est toutefois possible de lister ses composants :
une boucle for pour lister les slides ou on utilise le slide actuel
une boucle for pour lister les shapes du slide (celui de la boucle for au dessus ou celui fixé à celui en cours de visonnage)
 
Sur ces shapes vous disposez de l'attribut Name (ex: Rectangle 4), et vous disposez de l'attibut Id
 
Pour le moment j'avais un code qui comparait l'id de chacun des composants du slide avec un mis en dur (bien mais pas top)
 
 
Je vais a present essayer de mettre mes composants avec du code (j'ai déjà le rectangle grâce à fred178 ;)    ), puis de les manipuler avec mes scripts.
 
Au pire même si vous saviez l'Id de vos composants ça n'automatiserai pas plus votre code, juste un moyen de ne pas parcourir les composants grace à la technique des doubles boucle for qui servent pour identifier...
 
Si ce code peut vous être utile (j'en doute mais bon, ça en aidera peut être d'autres
For Each Forme In ActivePresentation.Slides(1).Shapes
        Debug.Print "name=" & Forme.Name & "left=" & Forme.Left & " id=" & Forme.Id
       
        'on cherche l'image du bouton menu
        If (Forme.Id = 5227) Then
            'apres on effectue son traitement, ici un alignement
            Forme.IncrementLeft 200
        End If
 Next
 

Reply

Marsh Posté le 07-07-2008 à 14:11:07    

J'ai une question, si un expert connait la solution chapeau !!! :
Je n'ai pas trouvé les moyen de rafraichir une page -> solution de la majorité des codeurs de VB dans powerpoint : faire un GotoPage sur la page actuelle pour donner l'impression que la page se rafraichit, sale code mais ça marche.
Voilà là où ça devient complexe : je dois effectuer ce code dans la partie VB d'une SlideMaster, en gros un calque que l'on peut appliquer à différents slides. Comment alors rafraichir le calque ??? ou le slide qui le contient ??? attention le code doit marcher en diaporama !!! Donc pas de select par exemple ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed