Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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,
 

erics83

XLDnaute Impliqué
bonsoir,
En fait, j’essaye de grouper l’image et le graphique pour pouvoir l’exporter en temps qu’image, mais ce n’est peut être pas la « bonne solution »….
Merci pour votre aide et/ou éclairage
Éric
 

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…