XL 2013 Insérer une image dans une cellule, l'ajuster à la taille de la cellule et l'enregistrer avec le classeur

BrunoVG

XLDnaute Nouveau
Bonjour,

Après plusieurs heures de recherche, j'ai enfin pu créer une macro qui permet d'insérer une image dans une cellule en adaptant sa dimension à celle de la cellule cible, et qui s'enregistre avec le classeur à sa fermeture.
Après une foultitude de test, j'ai constaté que la fonction:
VB:
activesheet.pictures.insert()
n'est pas la mieux adaptée.
En effet, son principal inconvénient est qu'elle importe le fichier image sous forme de lien (adresse du fichier), affiche l'image, la redimensionne si on veut, mais N'ENREGISTRE PAS l'image dans le classeur. C'est pratique pour garder un classeur "light" mais impose un dossier déporté contenant les images, dont l'adresse est fixe. Si on déplace le dossier ou que l'on modifie son nom, adieu les images dans le classeur!

J'ai lu des quantités de codes plus ou moins lourds, voir très lourds....mais aucun ne m'a permis de réaliser simplement et efficacement l'import d'images dans des cellules en les redimensionnant et en les enregistrant dans le classeur.
Aussi je mets en ligne dans ce post le code qui le permet, en espérant qu'il dépannera quelqu'un;)
Code:
Sub insere_image() 'nom de la macro'

Dim ficimg As String, Ad As String 'definition de la variable fichier image "ficimg" et de la cellule sélectionnée, active au moment de l'ordre d'insertion'
Ad = Selection.Address 'index de la cellule active'
ficimg = Application.GetOpenFilename(".jpg,*.jpg", , "Choisissez l'image") ' pour choisir l'image dans une fenêtre d'exploration'
If ficimg = "Faux" Then Exit Sub 'arrête la macro si pas de sélection'
ActiveSheet.Shapes.AddPicture(ficimg, False, True, Range(Ad).Left, Range(Ad).Top, Range(Ad).Width, Range(Ad).Height).Select ' insertion de l'image sélectionnée avec adaption des dimensions à la cellule'

End Sub

Pour le détail de la fonction shapes.addpicture, vous trouverez facilement sur le web....

Bon courage!
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib