Graph. : Insérer une série de valeurs à un certain rang (VBA) [Résolu]

Ataraxy

XLDnaute Nouveau
Bonjour,

Je travaille actuellement sur un fichier excel dans lequel je gère (entre autres) un tableau ainsi qu'un graphique de type combiné avec courbes et aires empilées sur une autre feuille reprenant les données du dit tableau.

j 'ai créé une macro capable d'insérer automatiquement une ligne dans ce tableau et ajouter des formules en relation avec les nombreuses autres feuilles du fichier. Une fois les données acquises, j'aimerais pouvoir tenir compte de cette nouvelle ligne de données dans mon graphique, c'est-à-dire ajouter une nouvelle série et pouvoir choisir son indice de placement afin que les aires soient empilées dans l'ordre de leur apparition dans le tableau. Je précise bien que les lignes sont susceptibles de s'insérer à n'importe quel endroit, pas seulement à la fin du tableau.

Voici un aperçu du tableau, pour rendre les choses plus concrètes :

graph.jpg

Voici le code actuel :

Code:
Sheets("Graphe").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(ligne_tableau).Name = _
    "='Feuille_tableau'!$N$" & ligne_tableau
ActiveChart.FullSeriesCollection(ligne_tableau).Values = _
    "='Feuille_tableau'!$O$" & ligne_tableau & ":$W$" & ligne_tableau

Mon problème est que ce code remplace le nom et les valeurs de la série se situant à la valeur prise par la variable "ligne_tableau". C'était prévisible, mais existe t-il un moyen d'insérer une nouvelle série à un endroit particulier, dans notre cas à l'indice "ligne_tableau", en décalant les autres séries ?

Je remercie d'avance les personnes qui se pencheront sur mon problème.

Bonne journée :)
 

Pièces jointes

  • graph.jpg
    graph.jpg
    29.6 KB · Affichages: 76
  • graph.jpg
    graph.jpg
    29.6 KB · Affichages: 75
Dernière édition:

Ataraxy

XLDnaute Nouveau
Re : Graph. : Insérer une série de valeurs à un certain rang (VBA)

Bonjour MJ13,

Malheureusement ce fichier contient des informations confidentielles... et changer les données de tout le fichier serait un calvaire.
Ma question se résume à savoir si quelqu'un connaît un code capable d'insérer directement de nouvelles séries dans un graphique. Manuellement on ajouterait la série, puis on la placerait comme bon nous semble à l'aide des flèches de la fenêtre de liste de séries. Mais j'ai tenté, ne connaissant pas le code correspondant, d'enregistrer une macro en déplaçant manuellement une série, et aucun code ne ressort de cette action. #SystèmeD
 

Ataraxy

XLDnaute Nouveau
Re : Graph. : Insérer une série de valeurs à un certain rang (VBA)

Ayant fini par trouver la réponse seul, je la poste ici pour les futurs intéressés :)


Voici la méthode que j'ai adopté pour pouvoir facilement décaler les séries d'un graphique :

Code:
Sheets("Feuil_GRAPH").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
With ActiveChart.SeriesCollection.NewSeries
     .ApplyDataLabels
    .DataLabels.ShowValue = False
    .DataLabels.ShowSeriesName = True
    .DataLabels.ShowCategoryName = False
    .DataLabels.ShowValue = False
    .Select
End With
Selection.FormulaLocal = "=SERIE('Feuil_Tableau'!$N$" & ligne_tableau & ";'Feuil_Tableau'!$O$63:$W$63;'Feuil_Tableau'!$O$" & ligne_tableau & ":$W$" & ligne_tableau & ";" & ligne_tableau & ")" 'Le dernier argument représente l'ordre de rangement de la série et prend ici la valeur ligne_tableau comme désiré

Merci quand même ;)
 

MJ13

XLDnaute Barbatruc
Re : Graph. : Insérer une série de valeurs à un certain rang (VBA)

Bonjour Atarxy

Merci pour ton code, c'est cool, cela va bien m'aider :).

Voici vers quoi je tendrais:

Code:
Sub Graphique_Auto_Ajoute_Série_Ataraxy()
'Sheets("Feuil_GRAPH").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
With ActiveChart.SeriesCollection.NewSeries
     .ApplyDataLabels
    .DataLabels.ShowValue = False
    .DataLabels.ShowSeriesName = False
    .DataLabels.ShowCategoryName = False
    .DataLabels.ShowValue = False
    .Select
End With
'Selection.FormulaLocal = "=SERIE('Feuil_Tableau'!$N$" & ligne_tableau & ";'Feuil_Tableau'!$O$63:$W$63;'Feuil_Tableau'!$O$" & ligne_tableau & ":$W$" & ligne_tableau & ";" & ligne_tableau & ")" 'Le dernier argument représente l'ordre de rangement de la série et prend ici la valeur ligne_tableau comme désiré
'exemple de texte sur la série en L14C18'=SERIE(Graphe!L14C3;Graphe!L10C4:L10C12;Graphe!L14C4:L14C12;4)
Selection.FormulaLocal = Cells(14, 18).Text
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu