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

  • Initiateur de la discussion Initiateur de la discussion BrunoVG
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
689
Retour