rendre dynamique un graph

noemie45

XLDnaute Occasionnel
Bonjour

j'ai un fichier avec plusieurs onglet, tous sous le même format
Je souhaiterais recopier mon graph qui est sur le 1er onglet sur l'ensemble des autres feuilles.
et je voudrais que mon graph prenne en compte les données de la page active.

cf pièce jointe

Merci pour votre aide
 

Pièces jointes

  • test.xlsx
    13.8 KB · Affichages: 61
  • test.xlsx
    13.8 KB · Affichages: 65
  • test.xlsx
    13.8 KB · Affichages: 75

adrianolms

XLDnaute Nouveau
Re : rendre dynamique un graph

Bonsoir,

Utilise cette macro sur chaque feuille ça devrait marcher

Sub Graph()
ActiveSheet.Activate
Range("A1:B10").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Range("A1:B10")
End Sub

Bonne soirée
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : rendre dynamique un graph

Bonjour à tous

Une proposition pour rendre un graphique dynamique et pas multiplier les graphiques statiques.
Choix de la page à prendre en compte dans la cellule jaune de l'onglet "GRAPH".
Création de plages nommées avec INDIRECT et DECALER.
Utilisation de ces plages comme source du graphique (NomEntierDuClassseurAvecExtention!NomDeLaPlage)

Et une formule pour afficher les données source des onglets sur l'onglet "GRAPH"


Cordialement

EDIT : Fichier plus simple
 

Pièces jointes

  • noemie45.xlsx
    49.7 KB · Affichages: 52
Dernière édition:

PMO2

XLDnaute Accro
Re : rendre dynamique un graph

Je souhaiterais recopier mon graph qui est sur le 1er onglet sur l'ensemble des autres feuilles.
Je voudrais que mon graph prenne en compte les données de la page active.

Bonjour,

Une piste en VBA.

Copiez le code suivant dans un module Standard
Code:
Sub CopieGraph_UpdateSerie()
Const NOM_GRAPH_PAR_DEFAUT As String = "Collage"
'---
Dim S As Worksheet
Dim CH As Chart
Dim CH2 As Chart
Dim CO As ChartObject
Dim NbChartObject&
Dim Adresse$
Dim FeuilleSource$
'--- Si la séléction n'est pas un graphique, on sort ---
If TypeName(Selection) <> "ChartArea" Then
  MsgBox "Veuillez sélectionner le graphique source"
  Exit Sub
End If
'--- Le graphique source ---
Set CH = ActiveChart
Adresse$ = CH.Parent.TopLeftCell.Address
FeuilleSource$ = CH.Parent.Parent.Name
'--- Boucle sur toutes les feuilles hormis la feuille source ---
For Each S In ActiveWorkbook.Worksheets
  CH.ChartArea.Copy                         'copie du graphique source
  If S.Name <> FeuilleSource$ Then          'la feuille source n'est pas prise en compte
    '/// VERIFICATION ///
    '--- S'il est déjà existant, Supprime le ChartObject ---
    '---  ayant le nom NOM_GRAPH_PAR_DEFAUT ("Collage")  ---
    For Each CO In S.ChartObjects
      If CO.Name = NOM_GRAPH_PAR_DEFAUT Then CO.Delete
    Next CO
    '--- Nombre de ChartObjets sur la feuille
    NbChartObject& = S.ChartObjects.Count
    '///////////////////
    S.Paste Destination:=S.Range(Adresse$)  'colle le graphique
    
    '--- Le nouveau graphique ---
    Set CH2 = S.ChartObjects(NbChartObject& + 1).Chart
    CH2.Parent.Name = NOM_GRAPH_PAR_DEFAUT  'on donne le nom par défaut au parent (ChartObject)
    CH2.SeriesCollection(1).Delete          'supprime la série
    S.[a1].CurrentRegion.Copy               'copie les données à partir de la cellule A1 (à adapter)
    CH2.SeriesCollection.Paste              'crée une nouvelle série avec les données adéquates
    '----------------------------
  End If
Next S
'--- Vide le presse-papiers ---
Application.CutCopyMode = False
End Sub

Marche à suivre :
Cliquez sur le graphique à reproduire pour qu'il soit sélectionné. Lancez la procédure "CopieGraph_UpdateSerie".
Le programme copie le graphique et le colle au même emplacement (TopLeftCell) sur toutes les autres feuilles.
Il met à jour chaque graphique en actualisant les données de série à partir de la région courante de la cellule A1.
 

Pièces jointes

  • Copie un graphiqe d'une feuille et le colle (actualisé) sur toutes les autres feuilles.xlsm
    25.2 KB · Affichages: 50

Discussions similaires