Dimensionner une zone de texte Power Point 2007 en VBA [Résolu]

Messages postés
17
Date d'inscription
jeudi 9 septembre 2004
Statut
Membre
Dernière intervention
10 juillet 2009
- - Dernière 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
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
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
17
Date d'inscription
jeudi 9 septembre 2004
Statut
Membre
Dernière intervention
10 juillet 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de papaye976