Bonsoir,
Tu n'insères pas une image dans des cellules. L'image est un objet Shape rattaché à la feuille. Tu le positionnes par rapport aux cellules.
Le problème résulte en fait de la méthode d'insertion... Essaie donc le code ci-dessous (le tien révisé) pour insérer l'image telle quelle et la redimensionner ensuite.
Private Sub CommandButton1_Click()
Dim Image, Imgi As Object, L!, T!, W!, H!, wi!, hi!
With Feuil1
L = Range("B35").Left
T = Range("B35").Top
W = Range("N35").Left - L
H = Range("J35").Left - L
End With
Image = Application.GetOpenFilename
If Image <> False Then
Set Imgi = Feuil1.Pictures.Insert(Image)
With Imgi
wi = .Width
hi = .Height
If wi < hi Then W = H
If wi >= W Then
H = hi * W / wi
Else
W = wi
H = hi
End If
.Left = L
.Top = T
.Width = W
.Height = H
End With
With Me.Image1
.Picture = LoadPicture(Image)
.PictureSizeMode = fmPictureSizeModeZoom
End With
End If
End Sub
Pour le dimensionnement, je me suis basé sur le rapport des 2 dimensions standard de la photo argentique et toujours du numérique haut de gamme, mais ce n'est pas le cas de tous les appareils numériques (donc revoir les adaptations selon le cas).
Il suppose que les colonnes B à M ont même largeur et que la largeur de cette plage constitue ta largeur standard pour les photos "paysage", j'ai donc pris les 2/3 comme hauteur standard des mêmes photos, qui devient la largeur stadard des photos "portrait".
Donc on prédimensionne L T W H sur cette base. Une fois la photo insérée on prélève sa largeur et sa hauteur ; si sa hauteur est supérieure à la largeur, on fait W = H pour inverser, sinon on laisse. Mais dans les 2 cas on recalcule la hauteur pour maintenir la proportionnalité existante (et éviter toute déformation), et je n'agrandis pas l'image si l'original est inférieur à W...
A toi de voir la suite.
Ferrand