Exporter le contenu de plusieurs cellules en images

Bonsoir,

Je souhaite exporter le contenu de cellules en images. J'ai en colonne A des cellules remplies et en colonne B des images issues de la manipulation suivante :

- Selection de la cellule A1 > Onglet "Accueil", groupe "Presse-papier"s > Copier > Copier en tant qu'image

- Selection de la cellule B1 > Coller

J'ai fait cette manipulation 6 fois afin d'expliquer ma question. Je souhaite automatiser cette tâche en copiant le contenu d'une plage puis en collant les images dans un répertoire donné.

Voici ce que j'ai essayé comme macro mais sans succès :

D'abord ça
:

Sub ExportObjectsAsImages()
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If shp. Type = msoPicture Then
            shp. Copy
            ActiveSheet.Paste Destination:=Worksheets("Sheet1"). Range("A1")
            Set shp = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
            shp. CopyPicture xlScreen, xlPicture
            Set newChart = ActiveSheet.Pictures.Paste
            newChart.Copy
            With NewChart
                . Left = shp. Left
                . Top = shp. Top
                . Width = shp. Width
                . Height = shp. Height
            End With
            ActiveSheet.Shapes(newChart.Name). Select
            Selection.Export "C:\Users\Username\Documents\" & shp. Name & ".png", _
            filtername:="PNG"
            ActiveSheet.Shapes(newChart.Name). Delete
        End If
    Next shp
End Sub

Puis ça :

Sub ExportObjectsAsImages()
    Dim shp As Shape
    Dim img As Object
    For Each shp In ActiveSheet.Shapes
        If shp. Type = msoPicture Then
            shp. CopyPicture
            Set img = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
            img. Picture = GetClipboardData(14)
            img. SaveAs "C:\Users\Username\Documents\" & shp. Name & ".png", 20
        End If
    Next shp
End Su

Merci d'avance pour votre aide

12test.xltm (58.08 Ko)

Bonjour Pablito,

Voir fichier ci-joint, le code de la procédure "ExportImageCell2Fichier" est dans "Module 1" et est appelable via ALT+F8 (ou associable à un bouton).

17pablito-test2.xlsm (20.85 Ko)

Cdlt,

Cylfo

Bonjour @Cylfo,

Merci pour ton aide cependant lorsque j'assigne la macro à une commande et que je suis tes consignes, rien qui se produit.

J'ai ajouté en pièce jointe le fichier avec la commande pour tester.

14pablito-test3.xlsm (22.01 Ko)

Re,

Je viens de tester, cela fonctionne mais j'ai peut-être mal interprété votre demande. En l'état la plage sélectionnée sélectionnée est directement exportée dans un fichier nommé "Image_"<NomDeLaFeuille>_<PlageCopiée>.pdf" qui est stocké dans le dossier temporaire de l'utilisateur (tapez %TEMP% dans la barre d'adresse de l'explorateur de fichiers vous y mènera directement et vous y trouverez les fichiers déjà créés).

Comme indiqué en commentaire dans le code, la partie dossier et nom du fichier sont à adapter à vos besoins.

Si ce n'est pas le résultat souhaité : Ce que vous souhaitez, c'est copier la plage dans une cellule adjacente puis ensuite la copier dans un dossier ?

Cdlt,

Cylfo

Bonjour @Cylfo,

Navré pour le délai du retour, j'étais en congés.

J'ai bel et bien un dossier "TemporaryItems" qui se crée lors de l'exécution de la macro cependant ce dernier est vide :

image

Est-ce parce que je suis sur un Mac ?

Merci

Bonjour,

Ah oui sur Mac ça n'a rien a voir, c'est très important de le préciser pour les macros, vous devriez le mettre dans le nom de version dans votre profil.

Peut être que @Dan pourra vous aider.

Bonjour Pablito,

Dans la version ci-jointe, le chemin d'accès au dossier recevant les copies est à renseigner dans la cellule "V_DOS_DEST" qui est sur fond jaune. Le code est compatible Mac et Windows (utilisation de Application.PathSeparator) mais ne connaissant pas l'environnement Mac je ne pourrai pas t'aider plus si le problème persiste.

10pablito-test4.xlsm (22.66 Ko)

Cdlt,

Cylfo

PS @saboh12617 , excellent conseil pour l'environnement mais ce dernier a dû disparaître de ton profil

Merci pour votre aide.

@saboh12617 : j'ai mis à jour la version sous mon profil pour éviter les confusions.

@Cylfo : en mettant à jour le chemin du dossier, j'ai bien un fichier image.jpg qui s'exporte. Cependant celle-ci est vide et ce quoi que je mette dans les cellules.

La voici ci-dessous :

image sheet1 a 2 a 7

Re,

J'ai téléchargé le fichier (v4) que je vous ai envoyé. J'ai changé quelques couleurs, remis un chemin d'accès existant, sélectionné la plage A2:A7 et cliqué sur le bouton, j'obtiens bien un fichier contenant la copie de la plage (voir fichier ci-joint).

image sheet1 a 2 a 7

Dans le fichier (v3) que vous avez envoyé, j'ai vu que des caractères accentués étaient remplacés par d'autres [exemple : ' Pas de refresh de l'Žcran (macro plus rapide)] mais cela n'affecte que des commentaires donc cela n'a pas d'incidence sur le code.

Je vous remets (au cas où ...) le fichier qui a servi au test

10pablito-test4p.xlsm (22.79 Ko)

Si cela ne fonctionne toujours pas, je sèche

Cdlt,

Cylfo

Je viens de lancer la macro depuis votre dernier fichier et j'obtiens ceci :

image

Ensuite cette ligne est surlignée dans la macro :

image

Pour finir lorsque je clique pour fermer l'erreur, je me rends compte qu'un nouvel onglet a été créé avec une image blanche :

image

On touche au but :)

Bonjour Pablito,

Avec le fichier joint, je souhaiterai que tu fasses le test suivant :

  1. dans la cellule sur fond jaune, renseignes un chemin et un nom de fichier dont tu es absolument sûr qu'il puisse être créé à l'endroit spécifié et avec le nom indiqué.
    1. Idéalement copies un fichier JPG à cet endroit pour t'en assurer et modifies le nom pour lui donner le nom indiqué avant de le supprimer (je ne connais pas le fonctionnement sur Mac et je ne sais pas si tu peux écraser un un fichier existant sans demande de confirmation).
  2. sélectionnes toute ou partie de la plage des cellules de test à copier
  3. cliques sur le boutons
  4. résultat ?

J'ai modifié (simplifié le code de copie mais ce n'est pas cela qui provoquait l'erreur, je pense plutôt qu'elle est liée au nom du fichier et/ou à son emplacement.

11pablito-test5.xlsm (22.29 Ko)

Cdlt,

Cylfo

Bonjour,

Je tombe sur ce fil à l'instant

Je viens de lancer la macro depuis votre dernier fichier et j'obtiens ceci :
... permission denied

@Pablito : cela est dû à la SANDBOX qu'Apple a mise en place dès la version High Sierra et il faut passer par la bibliothèque et le Group Container

@Cyflo :

Dans le fichier (v3) que vous avez envoyé, j'ai vu que des caractères accentués étaient remplacés par d'autres

Oui, comme j'ai souvent écrit, ne jamais mettre des accents dans les codes. On doit toujours penser Anglais surtout si on utilise un fichier sous windows et Mac. Là le MAC va transformer les caractères accents en autre chose.

Bon il faudrait avoir le retour de Pablito qui ne s'est plus montré depuis le 23/12/24

Crdlt

@Dan,

Oui, comme j'ai souvent écrit, ne jamais mettre des accents dans les codes. On doit toujours penser Anglais surtout si on utilise un fichier sous windows et Mac. Là le MAC va transformer les caractères accents en autre chose.

Nous sommes d'accord, c'est pour cela et comme vous l'aurez constaté, je ne mets jamais de caractères accentués dans le code mais je ne m'astreints pas (systématiquement) à ne pas en mettre dans les commentaires d'autant que Pablito n'avait pas au début précisé dans son profil qu'il était sous Mac.

Cdlt,

Cylfo

Bonjour Cylfo,

Content d'avoir votre aval là dessus et au moins on est deux à le penser et le faire.
Puis pour les commentaires c'est un détail en soi

..... que Pablito n'avait pas au début précisé dans son profil qu'il était sous Mac.

Bah malheureusement c'est souvent le cas pour les membres qui posent des questions
J'essaie de suivre cela dans les demandes mais ce n'est pas toujours facile

Au plaisir

Crdlt

Rechercher des sujets similaires à "exporter contenu images"