Insertion définitive image

Bonjour à tous,

Je bute sur un problème depuis un moment et malgré des recherches sur le net, je ne trouve pas la solution à mon problème.

J'ai un tableau dans lequel j'insère des images selon un chemin de dossier défini au départ et ensuite le numéro de la photo (01, 03, etc...) est une variable qui me permet d'aller chercher le fichier 02.jpg associé.

Seulement le code que j'utilise ne conserve pas la photo dans le tableau Excel... Si je change le répertoire des photos, elles n'apparaissent plus.

Voici le code en question :

Set Pics = ActiveSheet.Range("E" & Ligne2)

For Each Pic In Pics

ActiveSheet.Pictures.Insert(Chemin & "\-" & (NumPhoto) & ".jpg").Select

Next Pic

Y t'il un autre code que je pourrait utiliser, dans mon cas, pour fixer définitivement l'image dans le fichier, sachant que le range dépend aussi d'une variable.

Merci !

Bonsoir,

Ton code est incomplet... et ne semble pas très cohérent !

Pics : variable Range (espérons-le !) est initialisée sur une cellule de la colonne E.

Pic : qui devrait donc être aussi une variable Range utilisée dans une boucle For Each... Next, n'a guère de raison d'être puisque la plage sur laquelle elle boucle ne comporte qu'une cellule !

De surcroît Pic n'intervenant pas dans le code intra boucle, ça ne sert donc à rien en l'état !

La ligne intra boucle se suffit à elle-même, mais le Select est de trop, de même que les parenthèses autour de NumPhoto.

Sous réserve que Chemin et NumPhoto soient initialisés, et correspondent à quelque chose d'existant...

Les parenthèses encadrant Chemin....jpg sont à supprimer si on supprime Select sans le remplacer par autre chose.

Cette ligne de commande insèrera l'image visée si elle existe dans le dossier indiqué... et elle n'a alors aucune raison de disparaître une fois insérée !

Cordialement.

Merci de ta réponse MFerrand.

Oui je sais, c'est un peu du "bricodage"...

Je prend des exemples un peu partout et j'adapte à mon besoin !

En effet, tu as raison, j'ai déplacé le fichier et les photos ont été conservées...

La taille du fichier n'augmentant que très légèrement malgré l'ajout des images, je pensais que les images étaient juste linkées.

Concernant le Select, il intervient ici car après l'insertion de l'image, je la redimensionne avec :

Selection.ShapeRange.ScaleWidth 0.586, msoFalse, msoScaleFromTopLeft

Selection.ShapeRange.ScaleHeight 0.586, msoFalse, msoScaleFromTopLeft

Selection.ShapeRange.IncrementLeft 168

Selection.ShapeRange.IncrementTop 10

Sans le .Select, je n'avais pas trouvé d'autres solutions !

La taille augmentera avec le nombre d'images...

Tu compliques (tu n'as qu'une image à la fois...), il te suffit d'opérer l'insertion sous bloc With et tu définis le positionnement et éventuellement les dimensions dans le bloc :

With ActiveSheet.Pictures.Insert(Chemin & "\-" & NumPhoto & ".jpg")
    .Left = ...
    .Top = ...
    .Heigh = ...
    .Width = ... 'pour ma part, je n'en définis qu'une en conservant le ratio (l'autre dimension s'ajuste)
      ' pour définir les deux, il faut mettre .LockAspectRatio à False, ce qui peut déformer l'image...
End With

Finalement, j'ai trouvé la bonne manière d'insérer définitivement les images dans mon classeur, avec la méthode Add.Picture :

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/shapes-addpicture-method-excel

Ou

Rechercher des sujets similaires à "insertion definitive image"