Utilisation à la suite d'une même macro qui efface les précédentes utilisations

Résolu
Bonjour tous,

Dans le cadre de mon stage, je dois créer une base de données de matériaux qui seront réutilisées dans d'autres fichiers excel. Pour la faire la plus "user friendly", j'ai décidé de faire une macro qui à partir d'une feuille de référence, de créer une feuille qui sera remplie par l'utilisateur (je précise que mes connaissances en VBA sont assez faibles, mais c'est l'occasion de progresser). En plus de copier la feuille, cette macro prend les données (vides) pour faire deux graphiques puis copie ces graphiques dans une feuille où sont mis les graphes de tous les matériaux dont la fiche a été faite (et dont on peut sélectionner d'afficher ou non certaines courbes avec des check box)

A la première utilisation tout fonctionne bien (hormis l'attribution d'un nom à la check box avec une cellule, mais c'est subsidiaire).

Cependant lorsque je relance la macro (après avoir changé le nom de la feuille précédemment créée), il recréé bien une nouvelle feuille parfaitement mais efface les données de l'ancienne dans les graphiques communs.

Auriez-vous une solution à mon problème (et au passage celui de la check box, si vous avez envie)?

Merci d'avance, j'essaye vous joindre le fichier. Et n'hésitez surtout pas si vous avez des questions.

Raphaël

Configuration: Windows / Edge 17.17134

4 réponses

  1. Bonjour,
    sans fichier et sans pouvoir visualiser votre code, il va être difficile de vous aider !
    0
    1. Oui pardon, je n'arrivais pas à partager le fichier, j'allais mettre le code dans mon message principal
      0
      1. ci le code et le fichier

        https://www.cjoint.com/c/JFwkGlWa2QM

        Sub NewSheet()
        '
        ' NewSheet Macro
        '
        ' Touche de raccourci du clavier: Ctrl+q
        '
        Sheets("Blank Datas").Select
        Sheets("Blank Datas").Copy After:=Sheets(5)
        ActiveWindow.SmallScroll Down:=21
        ActiveSheet.ChartObjects("Graphique 10").Activate
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.FullSeriesCollection(1).XValues = "='Blank Datas (2)'!$S$6:$S$1800"
        ActiveChart.FullSeriesCollection(1).Values = "='Blank Datas (2)'!$T$6:$T$1800"
        ActiveWindow.SmallScroll Down:=39
        ActiveSheet.ChartObjects("Graphique 11").Activate
        ActiveSheet.ChartObjects("Graphique 11").Activate
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        ActiveChart.FullSeriesCollection(1).Name = "="
        ActiveChart.FullSeriesCollection(1).Values = _
        "='Blank Datas (2)'!$H$24,'Blank Datas (2)'!$K$24"
        ActiveChart.FullSeriesCollection(1).XValues = _
        "='Blank Datas (2)'!$I$25,'Blank Datas (2)'!$L$25"
        Sheets(" Comparison Graph ").Select
        ActiveWindow.SmallScroll Down:=-30
        ActiveSheet.ChartObjects("Graphique 1").Activate
        ActiveSheet.ChartObjects("Graphique 1").Activate
        Application.CutCopyMode = False
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.FullSeriesCollection(2).Name = "='Blank Datas (2)'!$C$8"
        ActiveChart.FullSeriesCollection(2).XValues = "='Blank Datas (2)'!$S$6:$S$1800"
        ActiveChart.FullSeriesCollection(2).Values = "='Blank Datas (2)'!$U$6:$U$1800"
        Static I As Long
        I = I + 1
        Cells(I + 4, 17).Select
        ActiveSheet.CheckBoxes.Add(960, 73.5, 120, 17.25).Select
        Application.CutCopyMode = False
        With Selection
        .Name = "='Blank Datas (2)'!$C$8"
        .Value = xlOff
        .LinkedCell = "'Blank Datas (2)'!$U$5"
        .Display3DShading = True
        End With
        ActiveWindow.SmallScroll Down:=12
        ActiveSheet.ChartObjects("Graphique 2").Activate
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.FullSeriesCollection(2).Name = "='Blank Datas (2)'!$C$8"
        ActiveChart.FullSeriesCollection(2).Values = _
        "='Blank Datas (2)'!$H$25,'Blank Datas (2)'!$K$25"
        ActiveChart.FullSeriesCollection(2).XValues = _
        "='Blank Datas (2)'!$I$25,'Blank Datas (2)'!$L$25"
        End Sub
        0
        1. Au final, en tâtant un peu j'ai trouvé une solution qui fonctionne (pas sûr que ce soit la meilleure ^^).
          J'ai créé 2 variables:
          Static T As Long
          Dim C As Integer
          C = 2 + T

          Puis j'utilise cette variable C ici:
          ActiveChart.SeriesCollection.NewSeries
          ActiveChart.FullSeriesCollection(C).Name = "='Blank Datas (2)'!$C$8"
          ActiveChart.FullSeriesCollection(C).XValues = "='Blank Datas (2)'!$S$6:$S$1800"
          ActiveChart.FullSeriesCollection(C).Values = "='Blank Datas (2)'!$U$6:$U$1800"


          Voilà! J'espère que mon problème en aidera d'autres

          Raphaël
          0