[Résolu] Remplacer un graphique par son image - VBA

  • Initiateur de la discussion Initiateur de la discussion VDAVID
  • 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 !

VDAVID

XLDnaute Impliqué
Bonjour le forum,

Je viens solliciter votre aide car je suis bloqué sur une partie de Macro depuis une journée.
N'ayant pas trouvé moi-même de solutions sur internet (Même après Moult recherches) je m'excuse d'avance si le sujet à déjà été traité et que je l'ai loupé.

- Dans le cadre d'une macro d'édition, je copie-colle plusieurs fois une feuille dans une nouvelle; en changeant la Région concernée. Ainsi, lorsque je change la région dans ma cellule, tous mes tableaux sont mis à jour via formule, ainsi que mes Graphiques. Je copie-colle ensuite en formats/Valeurs tous les tableaux et graphiques dans une nouvelle feuille.


- Mes graphiques sont gérés par des noms, et lorsque je les copie, les liaisons sont gardées. Donc à chaque fois que je change de région dans ma feuille source, les graphiques que j'ai copié avant ne corresponde plus à la région concernée.


Pour remédier à cela, j'ai pensé à copier puis collé en image chaque graphique nouvellement copié. Mais je n'arrive pas à "re situer" les graphiques au bon endroit.


Auriez-vous une solution VBAiste pour remédier à cela?


J'ai mis un fichier exemple en PJ, avec une variante de code que j'ai testé. (Et qui se rapproche le plus, à mon sens, de ce que je souhaiterais.)


Merci d'avance à tous ceux qui se pencheront sur mon problème ! 😀
 

Pièces jointes

Dernière édition:
Re : Remplacer un graphique par son image - VBA

Bonjour VDAVID,

Un essai avec deux méthodes, l'une place la copie aux coordonnées top et left semblables aux coordonnées du graphique source, l'autre place le copie au coin supérieur gauche de la cellule semblable à la cellule coin supérieur gauche du graphique source.

Edit: corrigé v1

VB:
Option Explicit


Sub MethodeXY()
Dim Graf As ChartObject, Shp As Shape
Dim MemX#, MemY#
  Set Graf = Sheets("Situation initiale").ChartObjects(1)
  MemX = Graf.Left: MemY = Graf.Top: Graf.Copy
  With Sheets("Résultat attendu")
    .Activate
    On Error Resume Next
    .Shapes("toto").Delete
    On Error GoTo 0
    .Pictures.Paste
    Set Shp = .Shapes(.Shapes.Count)
    Shp.Name = "toto"
    Shp.Top = MemY
    Shp.Left = MemX
  End With
Application.CutCopyMode = False
End Sub


Sub MethodeCell()
Dim Graf As ChartObject, Shp As Shape, cellHautGauche As Range
  Set Graf = Sheets("Situation initiale").ChartObjects(1)
  Set cellHautGauche = Graf.TopLeftCell
  Graf.Copy
  With Sheets("Résultat attendu")
    .Activate
    On Error Resume Next
    .Shapes("toto").Delete
    On Error GoTo 0
    .Pictures.Paste
    Set Shp = .Shapes(.Shapes.Count)
    Shp.Name = "toto"
    Shp.Top = .Range(cellHautGauche.Address).Top
    Shp.Left = .Range(cellHautGauche.Address).Left
  End With
Application.CutCopyMode = False
End Sub
 

Pièces jointes

Dernière édition:
Re : Remplacer un graphique par son image - VBA

Salut mapomme,

Merci c'est Top ! 🙂
Je vais opter pour la deuxième méthode !
Je ne connaissais pas l'instruction .TopLeftCell pour récupérer la cellule déterminant la position du Graphique !

Bonne journée et encore merci à toi !
 
- 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
2
Affichages
269
Réponses
5
Affichages
695
Réponses
1
Affichages
410
  • Question Question
Microsoft 365 création Graphique
Réponses
6
Affichages
555
Retour