Centrage du texte dans une forme libre

  • Initiateur de la discussion Initiateur de la discussion henryl
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

henryl

XLDnaute Nouveau
Bonjour

Lorsque je crée une forme libre à la main (avec la souris !) et que j'ajoute ensuite un texte, celui-ci est ancré par rapport à la forme. Je peux donc le centrer aussi bien horizontalement que verticalement.

Lorsque j'utilise une macro pour créer cette forme libre (Shapes.BuildFreeform) et que j'ajoute ensuite un texte, celui-ci est ancré par rapport au coin en haut à gauche de la forme. Lorsque je centre, le texte est centré sur ce coin.

Après de longues recherches sur le site de Microsoft et sur les forums, je désespère de trouver une solution. Comment faire pour changer l'ancrage du texte contenu dans une forme ?

Je joins un petit fichier car c'est toujours plus simple avec un exemple.

Merci pour votre aide
 

Pièces jointes

Re : Centrage du texte dans une forme libre

Merci Jacques. Je ne trouve malheureusement pas mon bonheur dans cet intéressant fichier. Le problème vient du fait que le comportement d'Excel n'est pas le même suivant que la forme a été créée avec une macro ou à la main. Dans le premier cas, la propriété VerticalAnchor va centrer le texte sur la hauteur de la forme tandis que dans le second, le texte sera centré sur le point en haut à gauche du rectangle virtuel qui entoure la forme (sur la poignée donc).
 
Re : Centrage du texte dans une forme libre

Code:
Sub essai()
   ActiveSheet.Shapes.AddShape(msoShapeOval, 10, 10, 100, 50).Name = "shape1"
   ActiveSheet.Shapes.AddShape(msoShapeOval, 10, 70, 100, 50).Name = "shape2"
   ecritShape "shape1", "coucou"
   ecritShape "shape2", "coucou", "Bas", "Gauche"
End Sub

Sub ecritShape(nomShape, Libellé, Optional posVert, Optional posHoriz)
    With ActiveSheet.Shapes(nomShape).TextFrame2.TextRange
        .Characters.Text = Libellé
        .Characters.Font.Size = 6
        If IsMissing(posVert) Then
          .Parent.VerticalAnchor = msoAnchorMiddle
        Else
          If posVert = "Bas" Then
           .Parent.VerticalAnchor = msoAnchorBottom
          Else
            If posVert = "Haut" Then
              .Parent.VerticalAnchor = msoAnchorTop
            Else
              .Parent.VerticalAnchor = msoAnchorMiddle
            End If
          End If
        End If
        If IsMissing(posHoriz) Then
          .Parent.HorizontalAnchor = msoAnchorCenter
        Else
          If posHoriz = "Gauche" Then
           .Parent.HorizontalAnchor = msoAnchorNone
          Else
           .Parent.HorizontalAnchor = msoAnchorCenter
          End If
        End If
     End With
End Sub

JB
 

Pièces jointes

Dernière édition:

Pièces jointes

Dernière édition:
Re : Centrage du texte dans une forme libre

Bonjour

Merci encore. C'est ce que j'appelle entrer par la fenêtre quand on arrive pas à entrer par la porte... Là cela fonctionne, mais cela double le nombre de forme donc ce n'est pas top. Il faudra sûrement que je m'en satisfasse si personne d'autre n'a une idée.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
2 K
Retour