FAQ PowerPointConsultez toutes les FAQ

Nombre d'auteurs : 20, nombre de questions : 150, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireMacros, VBA et fonctions avancéesFormes

Il suffit de programmer la macro suivante et l'affecter à la forme automatique (clic droit dessus et Paramètre des actions).

vba
Sélectionnez

Sub changecolor ()
Activepresentation.slides(numero de ta diapo).shapes(numero de ton image).Fill.Forecolor.RGB = RGB(255, 0, 0)
End Sub
Créé le 4 octobre 2007  par SilkyRoad

Lorsque vous insérez manuellement des objets dans un diaporama, PowerPoint va leur donner un nom (Rectangle 1, Ellipse 6, etc...), donc des noms peu parlants.

Le seul moyen qui existait pour nommer les éléments avec des noms cohérents, étaient d'ajouter les éléments par programmation.

Hors il est utile, lorsque vous voulez faire un peu de VBA, de donner des noms cohérents à des formes placées manuellement sur vos diapositives.

PowerPoint 2007 permet maintenant de nommer les éléments manuellement : Comment nommer un objet dans PowerPoint 2007 ?

Le code proposé va :

  • Se positionner sur chaque slide (diapositive de votre présentation).
  • Parcourir tous les éléments de votre diapositive en les sélectionnant (ce qui vous permettra de les visualiser).
  • Une boite de dialogue en haut à gauche vous indiquera le nom de la diapositive, le nom de l'élément.
  • Vous n'avez plus qu'à saisir le nouveau nom à la place de l'ancien, puis à valider et ainsi de suite.

Ce code est à utiliser lorsque vous créer votre présentation, et non en mode diaporama.

  • Copiez le code suivant dans un module de l'éditeur VBE (Alt + F11).
  • Positionnez le curseur de votre souris à l'intérieur de celui-ci.
  • Appuyez sur la touche F5 pour exécuter la routine.
  • La fenêtre de PPT passe alors au premier plan, une boite de dialogue en haut à gauche s'affiche, vous n'avez plus qu'à renommer au fur et à mesure.
vba
Sélectionnez

Public Sub RenommerShapes()
    '=======================================================================================
    ' Procedure    : RenommerShapes
    ' Auteur       : Philippe JOCHMANS - http://starec.developpez.com
    ' Date         : 19/04/2008
    ' Commentaires : Cette procédure va permettre de renommer les shapes de slides
    '=======================================================================================
 
    ' ===== déclaration des variables =====
    Dim objSld As Slide         ' va permettre de parcourir les diapositives du diaporama
    Dim objShp As Shape         ' va permettre de parcourir les éléments d'une diapositive
    Dim strNom As String        ' pour récupérer le nouveau nom
    Dim strMessage As String    ' message qui sera affiché dans la boite de demande du nom
 
    ' ===== boucle ======
    ' on boucle sur l'ensemble des diapositives
    For Each objSld In ActivePresentation.Slides
        objSld.Select
        ' on boucle sur l'ensemble des shapes
        For Each objShp In objSld.Shapes
            ' création du message qui indiquera slide + shape
            objShp.Select
            strMessage = "Elément sélectionné :" & vbCrLf & _
                         "- Slide : " & objSld.Name & vbCrLf & _
                         "- Shape : " & objShp.Name
            strNom = InputBox(strMessage, "Modification des noms", objShp.Name, 0, 0)
            ' contrôle du nom
            ' si on supprime le nom, on reprend l'ancien
            If strNom = "" Or IsNull(strNom) Then
                strNom = objShp.Name
            End If
            objShp.Name = strNom
        Next objShp
    Next objSld
End Sub
Créé le 13 juillet 2008  par Philippe JOCHMANS

Lorsque vous réalisez des dégradés dans une forme, il faut que l'indication du type de dégradé apparaisse avant l'affectation des couleurs.

Ainsi le code suivant fonctionne :

vba
Sélectionnez

Dim shp As Shape
Set shp = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeRectangle, 240, 240, 100, 100)
 
    With shp
            .Fill.TwoColorGradient msoGradientHorizontal, 1
            .Fill.ForeColor.RGB = RGB(255, 0, 0)
            .Fill.BackColor.RGB = RGB(0, 250, 0)
            .Fill.Visible = msoTrue
            DoEvents
    End With
 
End Sub
 

Si vous mettez la propriété .Fill.TwoColorGradient msoGradientHorizontal, 1 après l'affectation des couleurs (ForeColor et BackColor), le dégradé n'apparaîtra pas.

Créé le 18 novembre 2008  par Philippe JOCHMANS

Lorsque l'on change la dimension d'une forme par programmation, l'autre n'est pas modifié.
Si on veut garder un ratio entre la hauteur et la largeur, il faut utiliser la méthode LockAspectRatio de l'objet Shape.

Le code suivant va multiplier la hauteur de toutes les formes de la première diapositive par 1.5, et gardant le même ration sur la largeur.

vba
Sélectionnez

Public Sub Redimensionner()
     '---------------------------------------------------------------------------------------
     ' Procedure      : Redimensionner
     ' Auteur         : Philippe JOCHMANS - http://starec.developpez.com
     ' Date           : 15/05/2009
     ' Commentaires   : Comment redimensionner une image en gardant la proportion
     '---------------------------------------------------------------------------------------
    Dim sld As Slide
    Dim shp As Shape
 
    Set sld = ActivePresentation.Slides(1)
    For Each shp In sld.Shapes
        With shp
            .LockAspectRatio = msoTrue
            .Height = .Height * 1.5
        End With
    Next shp
End Sub
Créé le 1er août 2009  par Philippe JOCHMANS
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.