Exporter graphique sans fond

Muad

XLDnaute Nouveau
Salut tous le monde,

Je cherche, en vain, à exporter plusieurs graphiques de manière rapide, sans fond blanc et donc transparent.

L'idée, ce serait de mettre à jour une infographie sous illustrator ou photoshop avec les graphiques que j'ai réalisés sous excel.
Pour cela j'ai pensé à utiliser un logiciel de macro sous windows qui copie et colle les graphiques dans illustrator ou photoshop.
Seulement, lorsque je copie et que je colle un graphique, il y a le fond blanc présent. J'ai pourtant un fond transparent sur excel.

Seul inconvénient : il faut que ce soit une manipulation rapide, car le fichier excel va être modifié en continue...

Je m'en remet donc à vous, si quelqu’un a une idée, je vous remercie par avance.
 

Pièces jointes

  • exemple1.xlsx
    182.9 KB · Affichages: 83
  • exemple1.xlsx
    182.9 KB · Affichages: 94
  • exemple1.xlsx
    182.9 KB · Affichages: 81

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

:eek: Honnêtement pour moi c'est comme si c'était du polonais ! ^^

Merci beaucoup tout fonctionne parfaitement bien !

Je veux pas abusé mais est-il possible de modifié légèrement le code pour qu'il accepte d'exporter les graphiques, les formes automatiques et les images liées ?

Si c'est trop long, te casse pas la tête, c'est pas très très important !

Merci beaucoup à vous deux
 

Staple1600

XLDnaute Barbatruc
Re : Exporter graphique sans fond

Re

Muad
La macro ci-dessous exporte trois type d'objets
Cela presque répondre à ton dernier desiderata, non
(test OK avec XL 2013 avec une forme automatique, un graphique et une image sélectionnés sur la feuille active)
VB:
Sub ExporterShapesChartsEtPictures()
Dim fname$, shp As Shape, pict
If Len(ActiveWorkbook.Path) > 0 Then
fname = ActiveWorkbook.Path & "\"
End If
If TypeName(Selection) = "DrawingObjects" Then
For Each shp In Selection.ShapeRange
        Select Case shp.Type
        Case 1, 13
        'autoshape, picture
        shp.CopyPicture
        ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height).Name = "x_" & shp.Name
        With ActiveSheet.ChartObjects("x_" & shp.Name)
            .Chart.Paste
            .Chart.Export fname & "x_" & shp.Name & ".png"
            .Delete
        End With
        Case 3
        'charts
        ActiveSheet.ChartObjects(shp.Name).Chart.Export fname & shp.Name & ".png"
        End Select
        Next shp
End If
End Sub
 
Dernière édition:

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

Désolé cela fonctionne pas, excel m'ouvre une fenêtre d'erreur avec "400".

L'image lié à exporter, c'est une plage de cellule, copier coller en image lié.
La forme est une forme rectangle avec un texte à l’intérieur ou une cellule lié.

Merci encore
 

Staple1600

XLDnaute Barbatruc
Re : Exporter graphique sans fond

Re

Muad
(test OK avec XL 2013 avec une forme automatique, un graphique et une image sélectionnés sur la feuille active)
Chez moi cela fonctionne ;)

Et chez toi, c'est plus: " Je n'arrive pas à adapter ton code pour cela fonctionne chez moi" ;)

NB: Dans ton fichier exemple, sauf erreur, on ne trouve pas d'image liée, ni de forme automatique, non ?

Donc joins un fichier exemple actualisé avec tous les types de DrawingObjets que tu veux exporter en fichier image.
 
Dernière édition:

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

Voila un lien : Ce lien n'existe plus

Le fichier est lourd et rame pas mal.

Les graphiques sont à partir de la cellule EQ8.
Les trois types de fichier, tu peux les trouver à partir de cette cellule ("les zones", et les rectangles)

Merci
 

Staple1600

XLDnaute Barbatruc
Re : Exporter graphique sans fond

Re

Muad
Juste pour te prouver que cela fonctionne chez moi
(clique sur l'image pour l'afficher en taille réelle)
Si je sélectionne ces 4 objets, j'obtiens bien quatre fichiers images, non.
01ExportOK.png
NB: Joins directement dans ta discussion (sur le forum) un fichier exemple allégé
(créé pour l'occasion afin d'illustrer ta question)

(On ne joint jamais le fichier original complet!)
 
Dernière édition:

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

Oui je vois cela ^^, as-tu essayé avec mon fichier ?

J'arrive bien a exporter les graphiques, mais quand je sélectionne les formes ou images liées, ça fonctionne plus la fenêtre avec "400" apparait...

Modif : j'avais pas vu ta modif, j'essaye de l’alléger et le mettre directement sur le forum
 
Dernière édition:

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

Voila le fichier

Modif : En supprimant toutes les colonnes avant les graphiques, la macro a fonctionné.

Donc j'ai remis les graphe dans des colonnes très éloignés comme sur mon fichier pour que tu puisse voir l'erreur...
 

Pièces jointes

  • Statistique2.xlsm
    106.8 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Re : Exporter graphique sans fond

Re

Muad
Tes trois formes Rectangle à coins arrondis renvoient =#REF!
Pourquoi ?

Si on sélectionne tous objets sauf ceux-là, l'export se fait bien.

NB: Sur mon PC, j'ai mis les macros dans un module standard (pas dans le code de la feuille)
 

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

Parce que j'ai supprimer 99% de mon classeur pour que je puisse l'hébergé ici.

En entrant le code dans module sur cette feuille réduite, tout fonctionne sauf les rectangles.
En entrant le code dans module mais dans mon fichier original, les images liés ne fonctionne pas, le mode debogeur s'ouvre sur la ligne ".chart.paste"

Mais c'est pas grave, déjà les graphiques c'est déjà très bien, ne t’embête pas plus.

Merci pour toute ton aide
 

Staple1600

XLDnaute Barbatruc
Re : Exporter graphique sans fond

Re


Il eut été plus simple de bien me lire ;)
Joins directement dans ta discussion (sur le forum) un fichier exemple allégé
(créé pour l'occasion afin d'illustrer ta question)
Un fichier contenant un exemple de chaque type d'objet aurait suffit
Donc un fichier avec :

  • un graphique
  • une image
  • une forme automatique
  • une image liée
suffisait.

Par contre chaque objet devant être l'exact reflet de ceux que tu utilises dans ton fichier original.
(donc sans les =#REF)
 

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

Une réplique à peu prés similaire a mon fichier.

Chez moi seul les graphiques s'exportent.
 

Pièces jointes

  • Classeur1.xlsm
    28.4 KB · Affichages: 44
  • Classeur1.xlsm
    28.4 KB · Affichages: 36
  • Classeur1.xlsm
    28.4 KB · Affichages: 46

Staple1600

XLDnaute Barbatruc
Re : Exporter graphique sans fond

Re

EDITION: la macro précédente* fonctionne aussi sans bug si je lance au préalable la macro nettoyage
*: voir dans le message #17 la macro nommée Sub ExporterShapesChartsEtPictures()

Avant de lancer la macro d'export, on lance la macro nettoyage
Ensuite on lance la macro d'export

Testé sous Excel 2013 sans erreur avec les objets suivants
  • graphique
  • forme automatique
  • forme automatique avec texte liée à une cellule par formule
  • image liée (copie d'un plage avec liaison)
  • image (fichier image insérée par Insertion/Images/Insérer une image)

Code:
Sub nettoyage()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.Name Like "*_*" Then
shp.Delete
End If
Next
End Sub

VB:
Sub ExporterShapesChartsEtPicturesOK()
Dim fname$, shp As Shape
If Len(ActiveWorkbook.Path) > 0 Then
fname = ActiveWorkbook.Path & "\"
End If
If TypeName(Selection) = "DrawingObjects" Then
For Each shp In Selection.ShapeRange
        Select Case shp.Type
        Case 1, 13
         'autoshape, picture
        If shp.Type = 1 Then
        If Len(shp.DrawingObject.Formula) > 0 Then
        shp.TextFrame2.TextRange.Characters.Text = ActiveSheet.Range(CStr(shp.DrawingObject.Formula)).Text
        shp.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 0, 0)
        shp.DrawingObject.Formula = vbNullString
        End If
        End If
        shp.CopyPicture
        ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height).Name = "x_" & shp.Name
        With ActiveSheet.ChartObjects("x_" & shp.Name)
            .Chart.Paste
            .Chart.Export fname & "x_" & shp.Name & ".png"
            .Delete
        End With
        Case 3
        'charts
        ActiveSheet.ChartObjects(shp.Name).Chart.Export fname & shp.Name & ".png"
        End Select
        Next shp
End If
End Sub
 
Dernière édition:

Muad

XLDnaute Nouveau
Re : Exporter graphique sans fond

Salut,

Merci de ce nouveau code, mais il ne fonctionne pas chez moi.

With ActiveSheet.ChartObjects("x_" & shp.Name)
.Chart.Paste
.Chart.Export fname & "x_" & shp.Name & ".png"
.Delete
End With

Ce morceau de code apparait en jaune dans le débogueur.

Mais merci quand même d'avoir pris le temps pour moi, je vais garder le premier code qui exporte plusieurs graphiques, et pour les images et formes automatiques, je vais réalisé une macro windows qui copie et colle directement dans Illustrator...


Merci encore
 

Staple1600

XLDnaute Barbatruc
Re : Exporter graphique sans fond

Bonjour à tous

Muad
Chez moi cela fonctionne si...
EDITION: la macro précédente* fonctionne aussi sans bug si je lance au préalable la macro nettoyage
*: voir dans le message #17 la macro nommée Sub ExporterShapesChartsEtPictures()

PS: J'utilise Excel 2013, quelle est ta version d'Excel.

NB:Sinon un moyen autrement plus simple c'est d’enregistrer ta feuille en page Web.
(ce qui aurait pour effet d'exporter tous les objets dans un dossier créé automatiquement)
Ensuite tu n'as pas plus qu'à supprimer les images non désirées.
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
905

Statistiques des forums

Discussions
312 488
Messages
2 088 861
Membres
103 979
dernier inscrit
imed