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:
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
Pour le détail de la fonction shapes.addpicture, vous trouverez facilement sur le web....
Bon courage!
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()
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!