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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.