Remplissage automatique des valeurs de graphiques
Bonjour à tous,
Je suis entrain de développer un fichier permettant de suivre une production. Pour chaque étape de production, il y a une feuille de données (relevé de mesure) et une feuille de graphique (cartes de contrôle). J'ai programmé une macro afin de pouvoir ajouter facilement une étape. Cette macro copie la feuille de données, la renomme et la "nettoie". Ensuite, la macro copie la feuille de graphique, la renomme, remplace le nom de la feuille où sont stockées les données etc.
Problème : je n'arrive pas à programmer la macro qui change la plage des données du graphique (voir photos). Je pense que ma macro ne reconnais pas les variables lignes.
Merci d'avance pour votre aide et vos conseils
Public Numéro_passage As Long
Sub Ajout_Passage_Usinage()
'
' Ajout_Passage_Usinage Macro
' Copie le tableau de valeur et les cartes de contrôle pour rajouter un passage
Static i As Integer
For Numéro_passage = i + 2 To i + 2 'Manip pour ouvrir directement à passage 2 sinon on commence à passage 0
'
Sheets("Production Passage 1").Select
Sheets("Production Passage 1").Copy Before:=Sheets("Fin de production")
ActiveSheet.Name = ("Production Passage " & Numéro_passage)
Range(Cells(10, 1), Cells(47, 1)).Select
Selection.ClearContents
Range(Cells(10, 3), Cells(47, 6)).Select
Selection.ClearContents
Range(Cells(10, 9), Cells(47, 22)).Select
Selection.ClearContents
Range("B48:V54").Select
Selection.ClearContents
'On a créé une nouvelle page avec un tableau vierge
Application.DisplayAlerts = False
Sheets("Analyse production ").Select
Sheets("Analyse production ").Copy Before:=Sheets("Fin de production")
ActiveSheet.Name = ("Analyse production " & Numéro_passage)
Call Rechercher_Remplacer_Cartes
Call Modif_para_mesures
ActiveWindow.ScrollRow = 1
Sheets("Production Passage " & Numéro_passage).Select
ActiveWindow.ScrollRow = 1
Next Numéro_passage
i = i + 1
Application.DisplayAlerts = True
End Sub
Sub Rechercher_Remplacer_Cartes()
Dim r As Range
Set r = Range(Cells(1, 1), Cells(1500, 60))
r.Replace What:="'Production passage 1'", Replacement:="'Production passage " & Numéro_passage & "'", LookAt:=xlPart
End Sub
Sub Modif_para_mesures()
'
' Modif_para_mesures Macro
'
'
Dim graph As Integer
Dim ligne As Integer
For graph = 1 To 38
For ligne = 10 To 47
ActiveSheet.ChartObjects("Chart " & graph).Activate
ActiveChart.PlotArea.Select
ActiveChart.FullSeriesCollection(3).Values = _
"='Production Passage '& Numéro_passage !$J$ &ligne:$AR$ &ligne"
Next ligne
Next graph
End Sub
bonjour,
essaie avec cette syntaxe-ci
"='Production Passage " & numéro_passage & "'!$J$" & ligne & ":$AR$" & ligne
ça marche nickel merci. Mais du coup je dois avoir un autre soucis dans la macro parce qu'elle modifie toujours le même graphique. Je pense qu'il ne reconnait pas la variable graph dans la ligne suivante :
ActiveSheet.ChartObjects("Chart " & graph).Activate
MW78 a écrit :ça marche nickel merci. Mais du coup je dois avoir un autre soucis dans la macro parce qu'elle modifie toujours le même graphique. Je pense qu'il ne reconnait pas la variable graph dans la ligne suivante :
ActiveSheet.ChartObjects("Chart " & graph).Activate
En fait c'est ma boucle qui marche mal, elle fait toutes les lignes pour chaque graphique ^^
bonjour,
essaie alors ceci
remplace
For ligne = 10 To 47
ActiveSheet.ChartObjects("Chart " & graph).Activate
ActiveChart.PlotArea.Select
ActiveChart.FullSeriesCollection(3).Values = _
"='Production Passage '& Numéro_passage !$J$ &ligne:$AR$ &ligne"
Next ligne
par
ActiveSheet.ChartObjects("Chart " & graph).Activate
ActiveChart.PlotArea.Select
ActiveChart.FullSeriesCollection(3).Values = _
"='Production Passage " & numéro_passage & "'!$J$10:$AR$47"
ça ne fonctionne pas, j'ai une erreur 1004, application defined or object defined error.
re-bonjour,
il doit y avoir un problème avec la définition de la plase
remplace ton code par celui-ci, ce qui va te permettre d'afficher la plage qui sera sélectionnée, vérifié qu'elle est bien correcte.
ActiveSheet.ChartObjects("Chart " & graph).Activate
ActiveChart.PlotArea.Select
r = "='Production Passage " & numéro_passage & "'!$J$10:$AR$47"
MsgBox r
ActiveChart.FullSeriesCollection(3).Values = r