Bonjour,
Voici une proposition:
Le code utilisé:
Sub Macro1()
Dim Centre As Shape, Distance As Shape
Dim valDistance
valDistance = Cells(3, 5)
Set Distance = ActiveSheet.Shapes("Distance")
Set Centre = ActiveSheet.Shapes("centre")
With Distance
.Height = 0.35 * valDistance
.Width = 0.35 * valDistance
.Left = Centre.Left + Centre.Width / 2 - .Width / 2
.Top = Centre.Top + Centre.Height / 2 - .Height / 2
End With
End Sub
Pour la gauche, j'utilise la position du centre par rapport à la gauche, sa largeur, ainsi que la largeur de la forme "Distance". Et le même principe pour la position par rapport au haut mais avec les hauteurs.
J'ai également enlevé la partie où on précise la feuille dans laquelle on va chercher la valeur de la cellule ligne 3 et colonne 5 car c'est forcément la feuille active (sauf cas où on appelle cette macro via la fenêtre de macros, mais à la limite on peut tester le nom de la feuille et sortir si ça ne correspond pas à celle que l'on veut).
PS: quand on écrit Left ou Top, on obtient la position à gauche ou en haut du coin en haut à gauche de la forme.