Dimensionner une zone de texte Power Point 2007 en VBA

Résolu
papaye976 Messages postés 17 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 10 juillet 2009 - 9 juil. 2009 à 14:16
papaye976 Messages postés 17 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 10 juillet 2009 - 10 juil. 2009 à 10:09
Bonjour à tous je reposte, suite au peu de succès de mon post antérieur, dont le titre était peut-être un peu ésotérique...

Donc, j'essaye de créer une zone de texte dans power point 2007, et d'adapter la taille du texte à ses dimensions.

Pour
que le texte ne déborde pas, j'affecte la valeur "ppAutoSizeMixed" (-2)
à la propriété "textframe.autosize" de ma forme, eh bien ça plante avec
le message "la valeur tapée est en-dehors des limites" !!!

Pour
vérification, je crée une zone de texte manuellement, j'édite ses
propriétés (clic droit + format de la forme), et dans l'onglet "texte"
et je sélectionne "réduire le texte dans la zone de débordement", le
résultat est bien celui que je recherche, je visualise alors la
propriété "TextFrame.Autosize" de mon rectangle est la valeur est -2 !!!

Incompréhensible
??? N'hésitez pas à me faire savoir si vous avez le même problème, ou
si vous connaissez la solution, d'avance merci !!!

Voici mon code:

Dim myShape As Shape

Set myShape = Sld.Shapes.AddShape(msoShapeRectangle, 10, 10, 100, 160)
With myShape
        .TextFrame.TextRange.Font.Name = "Calibri"
        .TextFrame.TextRange.Font.Size = 10
        .TextFrame.TextRange.Text = "blablablabla"
        .TextFrame.AutoSize = ppAutoSizeMixed
End With

1 réponse

papaye976 Messages postés 17 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 10 juillet 2009
10 juil. 2009 à 10:09
Il semblerait que ce soit un bug de PPT2007:

http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/9abf1896-b341-4666-822d-70d8640ebf23

Je propose donc ma solution:
Mettre la propriété WordWrap à true, pour ne pas changer la largeur de la zone de texte, autoriser le redimensionnement de la zone de texte en fonction du texte, et diminuer la taille de la fonte jusqu'à ce que la boite de texte soit juste en-dessous de la hauteur désirée. Enfin, changer la propriété autosize pour imposer la taille de la zone de texte et re-dimensionner celle-ci avec la valeur originale.
C'est une usine à gaz, mais ça fontionne.

Le code:

Dim myShape As Shape

Set myShape = Sld.Shapes.AddShape(msoShapeRectangle, 10, 10, 100, 160)
With myShape
        .TextFrame.TextRange.Font.Name = "Calibri"
        .TextFrame.TextRange.Font.Size = 10
        .TextFrame.WordWrap = msoTrue

        .TextFrame.AutoSize = ppAutoSizeShapeToFitText

        .TextFrame.TextRange.Text = "blablablabla"
        While (.Height > 160) And (.TextFrame.TextRange.Font.Size > 0.5)

            .TextFrame.TextRange.Font.Size = .TextFrame.TextRange.Font.Size - 0.5

        Wend

        .TextFrame.AutoSize = ppAutoSizeNone

        .Height = 160

End With

CQFD
3
Rejoignez-nous