Bonjour a tout le monde.

voila mon problème : je cherche à faire une macro qui permettrai de créé un tableau (XY).

le nombre de courbe pouvant atteindre plus de 60 et étant dans un classeur différent de la macro, j'ai fais une première userform ou il indique, le classeur, la feuil et le nombre de courbe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public NbDeCourbe As Integer
Public CourbeActuelle As Integer
Public feuilC As String
Public ClasuerC As String
Private Sub CommandButton1_Click()
 
    ClasuerC = TextBox2.Value
    feuilC = TextBox3.Value
    NbDeCourbe = Val(TextBox10.Value)
 
    CourbeActuelle = 1
 
    Unload UserForm1
    UserForm2.Show
 
End Sub

la deuxième userforme permet de mètre la plage de valeur des X, des Y et l'emplacement du nom de la courbe (en valident sa ajoute la courbe et prépare pour la suivante).

la fonction : trensforme, permet de transformé : A2:C3 en 1 2 3 4

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Dim nomDeLaCelection As String
Private Sub CommandButton1_Click()
 
    Dim PlageXC As String, PlageYC As String
    Dim PlageXC1 As String, PlageYC1 As String
    Dim NomCourbe As String
    Dim reception
 
 
    NomCourbe = TextBoxA.Value
    PlageXC = TextBoxB.Value
    PlageYC = TextBoxC.Value
 
    If CourbeActuelle = 1 Then
        Charts.Add
        With ActiveChart
            .ChartType = xlXYScatterLines
            .SetSourceData Source:=Sheets(feuilC).Range(PlageXC1), PlotBy:=xlRows
            .SeriesCollection(1).Delete
        End With
        nomDeLaCelection = ActiveChart.Name
    End If
 
    reception = trensforme(PlageXC)
    CX11 = reception(1)
    CX12 = reception(2)
    LX11 = reception(3)
    LX12 = reception(4)
    reception = trensforme(PlageYC)
    CY11 = reception(1)
    CY12 = reception(2)
    LY11 = reception(3)
    LY12 = reception(4)
    PlageYC1 = "=" & feuilC & "!R" & CY11 & "C" & LY11 & ":R" & CY12 & "C" & LY12
    PlageXC1 = "=" & feuilC & "!R" & CX11 & "C" & LX11 & ":R" & CX12 & "C" & LX12
 
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(CourbeActuelle).XValues = PlageXC1
        .SeriesCollection(CourbeActuelle).Values = PlageYC1
        .SeriesCollection(CourbeActuelle).Name = "=""courbe"""
    End With
 
    If CourbeActuelle = NbDeCourbe Then
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "bubule"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "cx"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "cy"
        End With
    End If
 
    If CourbeActuelle = NbDeCourbe Then
        Unload UserForm2
        UserForm1.Show
    Else
        CourbeActuelle = CourbeActuelle + 1
    End If
 
End Sub
mon gros problème est que je n'y connais rien en tableau sur excel est vu toute les manipulations que je fais, ActiveChart ne doit plus indiquer le tableau

(l'erreur apparait au niveau de : .SeriesCollection.NewSeries / sa me mais : variable non définie)

merci pour votre aide.