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

Messages postés
17
Date d'inscription
jeudi 9 septembre 2004
Dernière intervention
10 juillet 2009
- 9 juil. 2009 à 14:16 - Dernière réponse :
Messages postés
17
Date d'inscription
jeudi 9 septembre 2004
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 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
17
Date d'inscription
jeudi 9 septembre 2004
Dernière intervention
10 juillet 2009
10 juil. 2009 à 10:09
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

Merci papaye976 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de papaye976

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.