Problème d'importation d'image

Salut,

Dans un fichier stocké sur Dropbox, j'ai une macro qui importe une image dans un fichier Excel. J'ai utilisé l'enregistreur qui m'a donné l'instruction suivante :

ActiveSheet.Pictures.Insert(Chemin de l'image).

" Chemin de l'image " est en dur dans l'enregistrement, mais je l'ai remplacé par une variable dans ma macro, pour tenir compte des configurations différentes des PC sur lesquels la macro peut être utilisée.

Le problème est que l'image importée par le macro est " perdue " quand le fichier est ouvert sur un autre PC que celui sur lequel il a été créé, tandis que si l'image est importée à la main il n'y a aucun problème. La macro est pour exactement la procédure manuelle.

Y'a t'il un moyen d'importer par macro l'image en tant qu'objet pour quelle fasse partie de fichier et non pas en tant que " lien " ?

Je mets un fichier en exemple, les deux image de gauche sont importées par macro, celle de droite à la main.

14classeur1.xlsm (26.26 Ko)

Merci d'avance.

A+

Manu

Bonsoir,

Essaie ainsi:

Sub Macro1()
    Dim doc$, img As Object
    doc = "C:\Users\Manu.cath\Documents\Aéroclub\Dropbox\Mecanique\" _
     & "Agrement G (Manu)\Logiciel\Images\F-BSBR pesée.jpg"
    With ActiveSheet
        Set img = .Pictures.Insert(doc)
        img.Copy
        img.Delete
        Set img = .Pictures.Paste(False)
        With .Range("B12")
            img.Left = .Left
            img.Top = .Top
        End With
    End With
End Sub

Cordialement.

Bonjour,

Autre solution :

Sub Macro1()
    Dim doc$, img As Object, W!, H!, L!, T!
    doc = "C:\Users\Manu.cath\Documents\Aéroclub\Dropbox\Mecanique\" _
     & "Agrement G (Manu)\Logiciel\Images\F-BSBR pesée.jpg"
    With ActiveSheet
        Set img = .Pictures.Insert(doc)
        W = img.Width: H = img.Height
        With .Range("B12")
            L = .Left: T = .Top
        End With
        img.Delete
        .Shapes.AddPicture doc, msoFalse, msoTrue, L, T, W, H
    End With
End Sub

NB- Le problème provient du fait que le mode d'insertion d'image par Pictures.Insert ne permet pas d'insérer une image en cassant le lien avec la source...

La première solution fournie dans le post précédent utilise le fait qu'une image collée (provenant donc du presse-papier) peut ou non être liée. On copie donc une première image insérée qu'on détruit avant de la coller, sans lien à la source (j'avais indiqué la valeur de l'argument Link, False, pour mettre l'accent sur lui, mais on peut l'omettre car il s'agit de la valeur par défaut).

Dans la solution ci-dessus, on utilise la méthode AddPicture de la collection Shapes, qui permet d'insérer une image à partir d'un fichier, en choisissant s'il doit être lié ou non, et enregistrable ou non avec le fichier, mais cette méthode exige de fournir aussi obligatoirement en arguments le positionnement (Left, Top) et le dimensionnement (Width, Height) de l'image.

Pour fournir les dimensions réelles de l'image (ou le cas échéant des dimensions proportionnées qui ne la déformeront pas), il faut pouvoir les prélever. On opère donc une première insertion d'image, sur laquelle on relève les dimensions (on en profite pour définir également le positionnement), image qu'on détruit comme précédemment, avant de procéder à l'insertion selon la méthode Shapes.AddPicture.

Cordialement.

Merci.

Je vais prendre la deuxième solution, vu que dans ma macro je définis déjà le positionnement et le dimensionnement de l'image.

Bon WE

Manu

Rechercher des sujets similaires à "probleme importation image"