Conserver image insérée avec Pictures.Insert

Bonjour,

J'ai un fichier Excel avec des images insérées par VBA via "Pictures.Insert". Quand j'ouvre le fichier sur un autre PC, les images ne s'affichent pas car le lien n'est plus le même.

J'aimerais savoir s'il existe un moyen d'enregistrer le fichier en "cassant" le lien afin que les images soient collées une bonne fois pour toutes (autre que refaire la même macro avec Shapes.AddPicture car des modifications ont été apportées sur les fichiers, et car j'aimerais pouvoir travailler avec un fichier léger avant de faire le rendu final).

Merci d'avance pour votre aide !

Bonjour MDO,

Une solution consiste à couper/coller l'image sur le PC ou le lien est bon

Sinon pour l'insertion d'image ou de logo, mieux vaut utiliser cette méthode

Sub AjoutLogo()
  Dim Shp As Shape, lShp As Long, tShp As Long
  ' Avec la page actuelle
   With ActiveSheet
      lShp = Selection.Left: tShp = Selection.Top
      Set Shp = .Shapes.AddPicture(Filename:="MonLogo.jpg", LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
        Left:=lShp, Top:=lShp, Width:=-1, Height:=-1)
    ' Redéfinir la taille et le nom
      With Shp
        .Width = 62.3622047244
        .Name = "MonLogo"
      End With
    End If
  End With
  Set Shp = Nothing: Set ShpRng = Nothing
End Sub

Merci pour les infos :-)

Le couper/coller dans mon cas risque d'être un peu long vu la quantité d'images, mais c'est bon à savoir !

J'aurais aimé ne pas refaire tourner la macro car les fichiers ont été modifiés à la main depuis (et ça ne permet pas de travailler avec des fichiers légers si les photos sont insérées dès le début), mais c'est ce que je ferai s'il n'y a pas d'autre solution.

Je retiens qu'il faut utiliser Shapes.Addpicture et pas Pictures.Insert pour ne pas avoir ce problème.

Re,

Vous pouvez faire une routine pour remplacer les images existantes

J'y ai pensé mais je ne sais pas trop comment faire sans que cela prenne trop de temps ! Il y a une méthode simple ?

Bonjour !

Je me permets de relancer le sujet. Peut-on faire une macro qui sélectionne toutes les images d'un classeur Excel (avec plusieurs feuilles), les coupe et les recolle au même endroit où elles étaient initialement ? Je n'ai pas trouvé de résultats satisfaisant malgré toutes mes recherches.

Merci d'avance :)

Bonjour MDO,

Cela ne semble pas vous avoir trop pénalisé depuis le temps (1 mois), est-ce vraiment utile

Sinon voici une routine que j'utilise pour autre chose et adaptée à votre demande

Sub RemplacerLogo()
  Dim Sht As Worksheet
  Dim Shp As Shape, ShpRng As ShapeRange
  Dim vWidth As Long, vHeight As Long, vLeft As Long, vTop As Long
  Dim Cel As Range
  ' Pour chaque feuille
  For Each Sht In ActiveWorkbook.Sheets
    Sht.Activate
      ' Pour chaque image
    For Each Shp In Sht.Shapes
      If InStr(1, Shp.Name, "Picture", vbTextCompare) = 0 And _
        InStr(1, Shp.Name, "Logo", vbTextCompare) = 0 Then GoTo NextShp
        ' Récupérer les dimension
        'vWidth = Shp.Width: vHeight = Shp.Height
        ' Récupérer la position
        vLeft = Shp.Left: vTop = Shp.Top
        ' Supprimer l'ancien logo après avoir pris les dimensions
        Shp.Cut
        Sht.Pictures.Paste.Select
        With Selection
          .Left = vLeft: .Top = vTop
          .Name = "Logo"
        End With
NextShp:
    Next Shp
  Next Sht
End Sub

A+

Merci beaucoup, ça m'a l'air parfait !

Je travaille sur une étude qui va durer plusieurs mois, j'avais laissé ce problème de côté le temps d'avancer sur autre chose mais c'était toujours dans un coin de ma tête.

Bonne journée et encore merci

Rechercher des sujets similaires à "conserver image inseree pictures insert"