Pas de soucis, il suffit de dissocier forme et texte :
1/ on crée la forme avec un turc genre :
Sheets("Bidule").Shapes.AddShape(msoShapeRoundedRectangle, L, T, W, H)
2/ on crée un texte dans la forme précédente :
Sheets("Bidule").Shapes.AddTextbox(msoTextOrientationHorizontal, L, T, W, H)
et là on la positionne où on veut en jouant sur L, T, W, H et en fonction du texte
Voici un exemple copié d'un de mes appli :
With Sheets("Planning")
couleur = .Range("A" & lg).Interior.color
Set Sh = .Shapes.AddShape(msoShapeRoundedRectangle, L, T, W, H)
With Sh
.Fill.ForeColor.RGB = couleur
.Line.ForeColor.RGB = RGB(160, 160, 160)
.Fill.Transparency = 0.3
.Name = "_" & Nom
With .TextFrame2
.HorizontalAnchor = msoAnchorCenter
.WordWrap = msoFalse
.MarginTop = 0.1
With .TextRange.Characters
.Text = Txt
.Font.Size = 10
.Font.Bold = True
.Font.Fill.ForeColor.RGB = &H353535
End With
End With
.OnAction = "Fiche"
End With
Set Sh = .Shapes.AddTextbox(msoTextOrientationHorizontal, L, 3 + T + H / 2, W, (H / 2) - 3)
With Sh
.Name = "__" & Nom
.Fill.ForeColor.RGB = couleur
.Line.Visible = msoFalse
.Fill.Transparency = 1
With .TextFrame2
.HorizontalAnchor = msoAnchorCenter
.TextRange.Text = Inf
.TextRange.Characters.Font.Fill.ForeColor.RGB = &HC0&
.TextRange.Characters.Font.Size = 8
.TextRange.Font.Italic = msoTrue
End With
.OnAction = "Fiche"
End With
End With