Microsoft 365 Récupérer une image dans une cellule Excel

  • Initiateur de la discussion Initiateur de la discussion Eric D CIV
  • 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 !

Eric D CIV

XLDnaute Nouveau
Bonjour,
Je suis tout nouvel inscrit sur ce forum.
Je cherche désespérément une macro pour récupérer une image dans une cellule excel.
La feuille contient Colonne A l'image et colonne B un nom.
Je dois générer des fichiers jpg pour chaque image avec son nom.
J'ai vu un exemple de code ci dessous sur ce forum mais même l'exemple me créer des images vides . J'ai bien activé les macro avant d'exécuter.
Il y aurait il une adaptation pour les version 365 d'Excel.
Merci de votre aide
 

Pièces jointes

Bonjour,
Ton détour par powerpoint fonctionne effectivement.
en modifiant ta macro comme suit, ce petit bricolage fonctionne par exemple ici pour multiplier par 5 la taille de ton image de départ.
A améliorer sans doute avec une inputbox.
1588837631226.png
 
Bonjour Eric D CIV, MP59,
J'ai vu un exemple de code ci dessous sur ce forum mais même l'exemple me créer des images vides . J'ai bien activé les macro avant d'exécuter.
Il y aurait il une adaptation pour les version 365 d'Excel.
Oui sur les dernières versions d'Excel il faut un certain temps d'attente pour que Paste crée la Shape.

On peut y remédier avec une boucle Do/Loop comme ceci :
VB:
Sub extraire_img()
Dim sh As Shape, img As Object
Dim ndf As String
    For Each sh In ActiveSheet.Shapes
        If Left(sh.Name, 1) <> "B" Then
            ActiveCell.Activate
            ndf = Range(sh.TopLeftCell.Address).Offset(0, 1).Text
            ndf = ActiveWorkbook.Path & "\" & ndf & ".jpg"
            sh.CopyPicture xlScreen, xlPicture
            Set img = ActiveSheet.ChartObjects.Add(0, 0, 5 * sh.Width, 5 * sh.Height)
            Do
                img.Chart.Paste
                DoEvents
            Loop While TypeName(Selection) = "Range" 'en attente de création de la Shape
            img.Chart.Export ndf, "JPG"
            img.Delete
        End If
    Next sh
End Sub
Edit : multiplié par 5 la taille des images.

A+
 

Pièces jointes

Dernière édition:
- 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
696
Réponses
4
Affichages
650
Retour