Bug Fonction d'import d'images : décalage à l'import

Bonjour à tous,

J'ai créé la fonction personnalisé suivante :

Function Image_test( _
    ByVal PictureName As String, _
    ByVal FolderName As String) As Variant

Dim CellLoc As Excel.Range
Dim p As Picture
Dim ImagePath As String

Set CellLoc = Application.Caller.Offset(, 0)

ImagePath = FolderName & PictureName

    Set p = CellLoc.Parent.Pictures.Insert(ImagePath)

    p.Left = CellLoc.MergeArea.Left
    p.Top = CellLoc.MergeArea.Top

    If p.Width > CellLoc.MergeArea.Width Then p.Width = CellLoc.MergeArea.Width
    If p.Height > CellLoc.MergeArea.Height Then p.Height = CellLoc.MergeArea.Height
    'Center

    If p.Width < CellLoc.MergeArea.Width Then p.Left = CellLoc.MergeArea.Left + (CellLoc.MergeArea.Width - p.Width) / 2
    If p.Height < CellLoc.MergeArea.Height Then p.Top = CellLoc.MergeArea.Top + (CellLoc.MergeArea.Height - p.Height) / 2

End Function

Cette fonction est sensée insérée une image dans la cellule où elle se trouve, et adapter l'image sans la déformer à la cellule.

Cette fonction fonctionne plutôt bien , mais il arrive des fois que l'image soit un peu trop grande et pas totalement dans la case (elle est décalée). Cela arrive surtout quand la fonction est combinée à une macro de sélection de dossier qui écrit le chemin de l'image à insérer dans la case "répertoire", d'où le "FolderName" dans la fonction.

Malgré mes efforts je ne vois pas pourquoi cela bug parfois, avez vous des idées ?

Merci 8)

UP : ajout de fichier d'exemple

Rebonjour, j'ajoute un fichier d'exemple pour illustrer mon problème : pour faire fonctionner l'import,d'image, créer une photo test.jpg, puis cliquer sur le bouton "choisir..."; et sélectionner le dossier dans lequel se trouve test.jpg.

Normalement l'image s'insère dans la case, mais il arrive qu'elle soit décalée, il faut alors supprimer l'image insérée puis re-valider la formule de cellule.

25bug-fonction.xlsm (36.34 Ko)

Merci

Update :

Visiblement le bug est causé par les autres cellules fusionnées alentours. J'ai en effet créé une copie du fichier avec une fiche sans aucune cellule fusionnée à par celles celles accueillant l'image, et cette fois il n'y a pas de décalage. Peut-être quelque chose à changer dans le code de la fonction ? Il y a un grand nombre de MergeArea par exemple...

Hello,

J'ai corrigé la macro, j'ai défini la taille de l'image en fonction de la plage image dans Excel, il y'avait aussi un souci important du au fait que la taille de l'image est verrouillée par défaut en proportionnel, quant on change la longueur, derrière la largeur change et vice versa, donc quand l'image n'est pas un carré parfait, il y'a un décalage et on voit de manière plus ou moins visible le rectangle qu'est l'image.

Rechercher des sujets similaires à "bug fonction import images decalage"