XL 2013 Combiner 1 graphique et 1 photo et les exporter

erics83

XLDnaute Impliqué
Bonjour,

J'ai un classeur. Dans ce classeur j'ai 1 graphique et 1 photo. J'aimerai les combiner et pouvoir les exporter.....
En effet, j'ai un code qui exporte bien le graphique,
Code:
Set MyChart = ActiveSheet.ChartObjects(1).Chart
MyChart.Export Filename:=ThisWorkbook.Path & "\Images\" & Feuil1.Range("B1") & n & ".jpg", filtername:="JPG"
mais QUE le graphique, c'est pourquoi il faut que je combine les 2....j'ai essayé en les groupant, mais cela ne fonctionne pas...ou alors, j'ai mal écrit l'instruction...j'ai essayé
Code:
Set MyChart = ActiveSheet.ChartObjects(1).Chart
Set MyChart = ActiveSheet.group(1).picture
mais cela ne fonctionne pas....
J'ai aussi essayé :
VB:
ActiveSheet.Shapes.Range(Array("Picture 4", "Chart 1")).Copy 'en utilisant l'enregistreur VBA
Set MyChart = Selection
MyChart.Export Filename:=ThisWorkbook.Path & "\Images\" & Feuil1.Range("B1") & n & ".jpg", filtername:="JPG"

Ca doit être "tout simple"...mais je ne trouve pas....

Merci pour votre aide,
 

fanch55

XLDnaute Barbatruc
Bonsoir,
Vous pouvez vous inspirer de ce bout de code :
VB:
Sub test()
Application.ScreenUpdating = False
    Shapes.Range(Array("Picture 1", "Chart 1")).Select
    Selection.CopyPicture
    ChartObjects.Add(0, 0, Selection.ShapeRange.Width, Selection.ShapeRange.Height).Select
    With ActiveChart
        .Paste
        .Export Filename:=ThisWorkbook.Path & "\Images\" & Feuil1.Range("B1") & n & ".jpg", filtername:="JPG"
        .Parent.Delete
    End With
End Sub
 

erics83

XLDnaute Impliqué
Top Merci fanch55,

J'avais vu ce code sue le net, mais j'espérai ne pas devoir créer un fichier temporaire et donc j'ai essayé via un groupement...mais apparemment c'est la seule solution....
Donc MERCI.

J'ai adapté et modifié quelques lignes (surtout concernant le format/taille de l'image : il fallait que la taille soit celle du graphique, donc j'ai fait :
VB:
Sub ExtractionImagesFeuille()
    Dim Pict As Picture
    Dim Nb As Byte
    Dim ChartObj As ChartObject
l = ActiveSheet.ChartObjects("Chart 1").Width
h = ActiveSheet.ChartObjects("Chart 1").Height

    ActiveSheet.Shapes.Range(Array("Chart 1", "Picture 4")).Select
    Selection.CopyPicture
      
            Set ChartObj = ActiveSheet.ChartObjects.Add(0, 0, l, h)
            
            ChartObj.Activate
            ChartObj.Chart.Paste 'colle l'image dans un graphique temporaire
            ChartObj.Chart.Export Filename:=ThisWorkbook.Path & "\Images\" & Feuil1.Range("B1") & n & ".jpg", filtername:="JPG"
        Nb = ActiveSheet.ChartObjects.Count
        ActiveSheet.ChartObjects(Nb).Delete 'Supprime le graphique
  


End Sub
Merci,
Eric
 

Discussions similaires

Réponses
5
Affichages
1 K

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35