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

Résolu
Elphara -  
 Elphara -
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. Yoyo01000 Messages postés 1720 Date d'inscription   Statut Membre Dernière intervention   168
     
    Bonjour,
    sans fichier et sans pouvoir visualiser votre code, il va être difficile de vous aider !
    0
  2. Elphara
     
    Oui pardon, je n'arrivais pas à partager le fichier, j'allais mettre le code dans mon message principal
    0
  3. Elphara
     
    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
  4. Elphara
     
    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