Graphique: Macro glissement de 7 lignes au niveau des séries
Résolu
Yrmouf
Messages postés
141
Statut
Membre
-
Yrmouf Messages postés 141 Statut Membre -
Yrmouf Messages postés 141 Statut Membre -
Bonjour,
J'écris ce post car je souhaiterais avoir une possibilité de décaler de 7 lignes mon graphique. En effet, c'est quelque chose d'hebdomadaire.
Pour le moment j'utilise une macro vraiment pas pratique qui est:
Sub Remplacer()
'
' Remplacer
'
ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.SeriesCollection(1).XValues = "='N+PRINT'!$A$44:$B$72" ActiveChart.SeriesCollection(1).Values = "='N+PRINT'!$C$44:$C$72" ActiveChart.SeriesCollection(2).Values = "='N+PRINT'!$D$44:$D$72"
ActiveChart.SeriesCollection(3).Values = "='N+PRINT'!$E$44:$E$72"
ActiveChart.SeriesCollection(4).Values = "='N+PRINT'!$G$44:$G$72"
ActiveChart.SeriesCollection(5).Values = "='N+PRINT'!$H$44:$H$72"
ActiveChart.SeriesCollection(6).Values = "='N+PRINT'!$I$44:$I$72"
ActiveChart.SeriesCollection(7).Values = "='N+PRINT'!$J$44:$J$72"
ActiveChart.SeriesCollection(8).Values = "='N+PRINT'!$K$44:$K$72"
End sub
Comme vous le voyez j'ai 8 séries, et pour décaler de 7 lignes je remplace chaque semaine les lignes par une addition de 7 c'est à dire ici c'est 44, semaine prochaine je mettrais 53 et 79 à la place de 72.
C'est assez rapide de faire un ctrl+F et remplacer les valeurs mais il existe très certainement un raccourci pour cela.
Faire un graphique glissant sur 29 jours avec la fonction décaler marcherait bien. Toutefois, les données du tableau ne sont pas remplies par mois mais par une kyrielle de personnes, ce qui fait qu'il existe des prévisions sur plusieurs jours qui ne sont pas encore arrivés, et qui engendre donc un décalage non souhaité.
Auriez-vous une idée de comment réaliser le décalage de +7 dans la macro s'il vous plaît?
Merci par avance à ceux qui répondront.
Bonne journée à vous tous! :)
J'écris ce post car je souhaiterais avoir une possibilité de décaler de 7 lignes mon graphique. En effet, c'est quelque chose d'hebdomadaire.
Pour le moment j'utilise une macro vraiment pas pratique qui est:
Sub Remplacer()
'
' Remplacer
'
ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.SeriesCollection(1).XValues = "='N+PRINT'!$A$44:$B$72" ActiveChart.SeriesCollection(1).Values = "='N+PRINT'!$C$44:$C$72" ActiveChart.SeriesCollection(2).Values = "='N+PRINT'!$D$44:$D$72"
ActiveChart.SeriesCollection(3).Values = "='N+PRINT'!$E$44:$E$72"
ActiveChart.SeriesCollection(4).Values = "='N+PRINT'!$G$44:$G$72"
ActiveChart.SeriesCollection(5).Values = "='N+PRINT'!$H$44:$H$72"
ActiveChart.SeriesCollection(6).Values = "='N+PRINT'!$I$44:$I$72"
ActiveChart.SeriesCollection(7).Values = "='N+PRINT'!$J$44:$J$72"
ActiveChart.SeriesCollection(8).Values = "='N+PRINT'!$K$44:$K$72"
End sub
Comme vous le voyez j'ai 8 séries, et pour décaler de 7 lignes je remplace chaque semaine les lignes par une addition de 7 c'est à dire ici c'est 44, semaine prochaine je mettrais 53 et 79 à la place de 72.
C'est assez rapide de faire un ctrl+F et remplacer les valeurs mais il existe très certainement un raccourci pour cela.
Faire un graphique glissant sur 29 jours avec la fonction décaler marcherait bien. Toutefois, les données du tableau ne sont pas remplies par mois mais par une kyrielle de personnes, ce qui fait qu'il existe des prévisions sur plusieurs jours qui ne sont pas encore arrivés, et qui engendre donc un décalage non souhaité.
Auriez-vous une idée de comment réaliser le décalage de +7 dans la macro s'il vous plaît?
Merci par avance à ceux qui répondront.
Bonne journée à vous tous! :)
A voir également:
- Graphique: Macro glissement de 7 lignes au niveau des séries
- Changer carte graphique - Guide
- Graphique sparkline - Guide
- Graphique camembert excel - Guide
- Comment faire un graphique sur excel - Guide
- Planification de processeur graphique à accélération matérielle - Guide
3 réponses
J'ai essayé comme piste:
Sub Remplacer()
'
' Remplacer
'
Dim i
i = Range("AQ1").value+ 1 ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.SeriesCollection(1).XValues = "='N+PRINT'!$A$:$B$" &i
ActiveChart.SeriesCollection(1).Values = "='N+PRINT'!$C$:$C$"&i
ActiveChart.SeriesCollection(2).Values = "='N+PRINT'!$D$:$D$"&i
ActiveChart.SeriesCollection(3).Values = "='N+PRINT'!$E$:$E$"&i
ActiveChart.SeriesCollection(4).Values = "='N+PRINT'!$G$:$G$"&i
ActiveChart.SeriesCollection(5).Values = "='N+PRINT'!$H$:$H$"&i
ActiveChart.SeriesCollection(6).Values = "='N+PRINT'!$I$:$I$"&i
ActiveChart.SeriesCollection(7).Values = "='N+PRINT'!$J$:$J$"&i
ActiveChart.SeriesCollection(8).Values = "='N+PRINT'!$K$:$K$"&i
End Sub
Mais bon fonctionne seulement en rajout de lignes mais pas en décalage :(
Sub Remplacer()
'
' Remplacer
'
Dim i
i = Range("AQ1").value+ 1 ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.SeriesCollection(1).XValues = "='N+PRINT'!$A$:$B$" &i
ActiveChart.SeriesCollection(1).Values = "='N+PRINT'!$C$:$C$"&i
ActiveChart.SeriesCollection(2).Values = "='N+PRINT'!$D$:$D$"&i
ActiveChart.SeriesCollection(3).Values = "='N+PRINT'!$E$:$E$"&i
ActiveChart.SeriesCollection(4).Values = "='N+PRINT'!$G$:$G$"&i
ActiveChart.SeriesCollection(5).Values = "='N+PRINT'!$H$:$H$"&i
ActiveChart.SeriesCollection(6).Values = "='N+PRINT'!$I$:$I$"&i
ActiveChart.SeriesCollection(7).Values = "='N+PRINT'!$J$:$J$"&i
ActiveChart.SeriesCollection(8).Values = "='N+PRINT'!$K$:$K$"&i
End Sub
Mais bon fonctionne seulement en rajout de lignes mais pas en décalage :(
https://www.cjoint.com/?3HAsrX4vZ7N
bonne suite
Par ailleurs je cherche à comprendre le code:
Public Function Deca7(ByVal ss As String) As String
Dim t
t = Split(ss, "$") 'Séparation au niveau du $ mais que représente ss?
t(2) = Left(t(2), Len(t(2)) - 1) + 7 'Rajout de +7 aux lignes mais que le (2)?
t(4) = t(4) + 7 'Que représente le (4)?
Deca7 = t(0) & "$" & t(1) & "$" & t(2) & ":$" & t(3) & "$" & t(4) 'Compilation des nouvelles lignes
End Function
Private Sub btDec7_Click()
Dim ser As String, nuser As Long, nbser As Long, ts
With ActiveSheet.ChartObjects(1).Chart
nbser = .SeriesCollection.Count 'nb séries, compte le nombre de séries pour pouvoir faire décaler autant de séries qu'il y en a dans le graphique
For nuser = 1 To nbser 'nuser représente toutes les séries qui existent
ser = .SeriesCollection(nuser).FormulaLocal 'Récupération de la formule de =serie
ts = Split(ser, ";") 'séparation au niveau de la sélection des cellules pour obtenir les lignes
ts(1) = Deca7(ts(1)) 'utilisation de la macro plus haut pour décaler de 7 la première partie de séparation
ts(2) = Deca7(ts(2)) 'utilisation de la macro plus haut pour décaler de 7 la deuxième partie de séparation
ser = ts(0) & ";" & ts(1) & ";" & ts(2) & ";" & ts(3) 'compilation
.SeriesCollection(nuser).FormulaLocal = ser
Next nuser
End With
End Sub
Est-ce que cela est juste? Pourriez-vous apporter plus de précisions s'il vous plaît? Si vous voulez bien bien sûr.
Cordialement
Un exemple est toujours plus clair :)
https://www.cjoint.com/c/CHBpeQSAbvv
bonne journée