Graphique: Macro glissement de 7 lignes au niveau des séries

Résolu
Yrmouf Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -  
Yrmouf Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -
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! :)

A voir également:

3 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

une possibilité
https://www.cjoint.com/c/CHArMVJuFtD

Bonne suite
1
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
et appliqué à un graphique
https://www.cjoint.com/?3HAsrX4vZ7N

bonne suite
0
Yrmouf Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   5
 
Bonjour, merci pour la réponse, cela fonctionne partiellement, je ne suis pas sûr de comprendre l'erreur, cela m'indique "Erreur d'exécution 9: L'indice n'appartient pas à la sélection"

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
0
Yrmouf Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   5
 
https://www.cjoint.com/?3HBlz7pPwUk

Un exemple est toujours plus clair :)
0
Yrmouf Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   5
 
Je viens de trouver mon erreur, mes excuses, merci beaucoup! Mais je veux bien une petite explication si vous avez le temps haha!
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
voilà pour quelques explicationssssss
https://www.cjoint.com/c/CHBpeQSAbvv

bonne journée
0
Yrmouf Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   5
 
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 :(
0
foo
 
bonjour

un idée mettre une varriable

Nsem = 44
ou
Nsem = Range("A1").Value

"='N+PRINT'!$A$" & Nsem & ":$B$72"

A+
Maurice
0
Yrmouf Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   5
 
Bonjour,

Visiblement il y a une rupture d'instructions au niveau de ":$B$72", merci tout de même
0