Position du texte avec une freeform créé par VBA
Bonjour,
Je suis tombé sur ce qui ressemble à un bug d'Excel (Office 2013). J'aurai voulu trouver un moyen de le contourner.
Lorsque je dessine une Freeform depuis le code VBA et que je défini un texte à l'intérieur celui ci se trouve en-dehors de la boite.
Manipuler les positions de texte (verticale et horizontale) ni font rien.
En revanche lorsque, manuellement, je créé un point pour le détruire aussitot le texte se position normalement au centre.
Par ailleurs, si je créé cette freeform manullement le texte se positionne normalement.
Voici le code VBA que j'utilise:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Sub test()
Dim objectShape As shape
Dim pointCoord() As Single
ReDim pointCoord(1 To 5, 1 To 2)
pointCoord(1, 1) = 100
pointCoord(1, 2) = 100
pointCoord(2, 1) = 200
pointCoord(2, 2) = 100
pointCoord(3, 1) = 200
pointCoord(3, 2) = 200
pointCoord(4, 1) = 100
pointCoord(4, 2) = 200
pointCoord(5, 1) = 100
pointCoord(5, 2) = 200
Set objectShape = ActiveSheet.Shapes.AddPolyline(SafeArrayOfPoints:=pointCoord)
With objectShape.TextFrame2
.TextRange.Text = "Test developpez.net"
End With
With objectShape.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(128, 250, 200)
End With
With objectShape.TextFrame
.HorizontalAlignment = xlHAlignCenter
.VerticalAlignment = xlVAlignCenter
End With
End Sub |
Pour info
- je n'ai pas trouvé comment ajouter/supprimer un point d'une freeform déjà convertie en shape.
- la comparaison des attributs d'une freeform créé manuellement ou par VBA à l'aide de la fenêtre "Locals" ne me donne rien: les objets semblent identiques
Si vous connaissez la solution je suis preneur et merci d'avance
Gris.