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
pb programmation edit series pb programmation no lignes ligne code bug

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
 
Rechercher des sujets similaires à "remplissage automatique valeurs graphiques"