Sub redimensionner()
Dim Hauteur, largeur, x, HautGauche As Range
Application.ScreenUpdating = False
Hauteur = Range("j2").RowHeight ' Taille cellule de référence J2
For Each x In ActiveSheet.Shapes
Set HautGauche = x.TopLeftCell ' cellule du coin supérieur gauche de la forme
If HautGauche.Column = Range("j1").Column Then ' si la cellule du coin sup gauche est F
With x
If HautGauche.Row > 2 Then HautGauche.RowHeight = Hauteur ' redimensionner la cellule comme la cellule J2
' Sans déformation
.ScaleHeight 1, msoTrue ' rétablir la hauteur d'origine
.ScaleWidth 1, msoTrue ' rétablir la largeur d'origine
.LockAspectRatio = True ' verrouiller le rapport Hauteur/Largeur
.Width = HautGauche.Width - 2 ' la largeur de l'image est égale à celle de la cellule -2
.Height = HautGauche.Height - 2 ' la hauteur de l'image est égale à celle de la cellule -2
'après redimensionnement, si la largeur dépasse celle de la cellule, on remet la largeur à cvelle de la cellule
If .Width >= HautGauche.Width - 2 Then .Width = HautGauche.Width - 2
.Left = HautGauche.Left + (HautGauche.Width - .Width) / 2 ' Placement de l'image au milieu de la cellule
.Top = HautGauche.Top + (HautGauche.Height - .Height) / 2 ' Placement de l'image au milieu de la cellule
End With
End If
Next x
End Sub