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

Résolu/Fermé
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 - Modifié par Yrmouf le 26/08/2013 à 16:30
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 - 27 août 2013 à 15:31
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
26 août 2013 à 17:40
Bonjour

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

Bonne suite
1
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
26 août 2013 à 18:18
et appliqué à un graphique
https://www.cjoint.com/?3HAsrX4vZ7N

bonne suite
0
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 5
27 août 2013 à 11:18
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 samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 5
27 août 2013 à 11:27
https://www.cjoint.com/?3HBlz7pPwUk

Un exemple est toujours plus clair :)
0
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 5
27 août 2013 à 15:03
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 27/08/2013 à 15:05
voilà pour quelques explicationssssss
https://www.cjoint.com/c/CHBpeQSAbvv

bonne journée
0
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 5
26 août 2013 à 17:01
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
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 samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 5
26 août 2013 à 17:47
Bonjour,

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