OK, donc tout d'abord, parce que vous essayez de changer la couleur d'une forme sélectionnée, ce implique que vous êtes dans la vue normale (édition) et non un diaporama . Deuxièmement, les boutons ActiveX ou les formes avec Actions pour exécuter des macros peuvent uniquement être cliqués en mode diaporama. Ainsi, la seule option que vous avez pour un "bouton" dans la vue normale est d'utiliser les fonctions d'extensibilité du ruban d'Office. Vous devez ajouter le code XML d'un bouton à l'interface utilisateur personnalisée de votre fichier PowerPoint et créer une macro associée pour l'exécuter. Par exemple, ajoutez XML à votre fichier en utilisant le CustomUI Editor:
// Fluent UI customisation to add a single button to the PowerPoint ribbon //
// Written by Jamie Garroch of YOUpresent Ltd. http://youpresent.co.uk //
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab id="tabMyTab" label="My Tab">
<group id="grpMyGroup" label="My Group">
<button id="btnMyButton" label="My Button" onAction="MyMacro"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
... puis fermez le fichier dans l'éditeur customUI et ouvrez à nouveau dans PowerPoint. Alors donnez votre macro:
' PowerPoint macro to change the fill colour of a single selected shape
' Written by Jamie Garroch of YOUpresent Ltd. http://youpresent.co.uk
Public Sub MyMacro(control As IRibbonControl)
With ActiveWindow.Selection
If .Type = ppSelectionShapes Then
If .ShapeRange.Count = 1 Then
If .ShapeRange.Type = msoAutoShape Then
.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
End If
End If
End If
End With
End Sub
Maintenant, lorsque vous cliquez sur My Button dans l'onglet personnalisé Mon Tab, s'il y a une seule forme sélectionnée de type AutoShape sur la diapositive en vue puis la couleur de remplissage changera au rouge.