Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/12/2011, 17h26   #1
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 28
Points : -9
Points : -9
Par défaut Plage de données Graphiques

Bonjour tout le monde,

Déjà Joyeux Noël à tout le monde !

J'essaye de définir une plage de données pour un graphique.
Mon code est le suivant :

Code :
1
2
3
4
5
6
Graph7.Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MaximumScale = max + 10
ActiveChart.Axes(xlValue).MinimumScale = min - 10
Plage = "=" & Feuil5 & "!" & Cells(NoLigneDebut, 5).Address(ReferenceStyle:=xlR1C1) & ":" & Cells(NoLigneFin, 5).Address(ReferenceStyle:=xlR1C1)
ActiveChart.SeriesCollection(2).XValues = Plage
Et lorsque j'essaye ça me met une erreur d'excécution type 438 = Propriété ou méthode non gérée par cet objet.

Si quelqu'un peut m'aider.

Merci d'avance.

Yoan
Monte_Carlo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 18h20   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Mets ton code en entier
Il faudrait éviter les Activate/Select/ActiveChart
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/12/2011, 19h06   #3
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 28
Points : -9
Points : -9
Code :
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
64
65
66
67
68
69
70
Public Sub GraphiqueMACD()
 
Dim i, j, NoLigneDebut, NoLigneFin As Integer
Dim Plage As Variant
Dim max, min As Double
 
Graph7.Activate
 
If UserForm1.OptionButton1 = True Then
    ActiveChart.ChartTitle.Text = "Evoltuion du S&P 500 et MACD"
    ActiveChart.SeriesCollection(1).Name = "Cours S&P500"
Else
    If UserForm1.OptionButton4 = True Then
        ActiveChart.ChartTitle.Text = "Evoltuion du CAC 40 et MACD"
        ActiveChart.SeriesCollection(1).Name = "Cours CAC40"
    Else
        If UserForm1.OptionButton3 = True Then
            ActiveChart.ChartTitle.Text = "Evoltuion du DAX et MACD"
            ActiveChart.SeriesCollection(1).Name = "Cours DAX"
        Else
            If UserForm1.OptionButton2 = True Then
                ActiveChart.ChartTitle.Text = "Evoltuion du FTSE 100 et MACD"
                ActiveChart.SeriesCollection(1).Name = "Cours FTSE100"
            End If
        End If
    End If
End If
 
ActiveChart.SeriesCollection(2).Name = "Diff MME"
ActiveChart.SeriesCollection(3).Name = "Filtrage"
 
i = 1
max = Feuil5.Cells(1, 2)
min = Feuil5.Cells(1, 2)
NoLigneDebut = 0
NoLigneFin = 0
 
i = 1
Do Until IsEmpty(Feuil5.Cells(i, 1))
    If Feuil5.Cells(i, 5) = 0 Then
        i = i + 1
    Else
        NoLigneDebut = i
        Exit Do
    End If
Loop
 
i = 1
Do Until IsEmpty(Feuil5.Cells(i, 1))
        max = Maximum(Feuil5.Cells(i, 2), max)
        max = Maximum(Feuil5.Cells(i, 5), max)
        max = Maximum(max, Feuil5.Cells(i, 6))
        min = Minimum(Feuil5.Cells(i, 2), min)
        If Feuil5.Cells(i, 5) <> 0 And Feuil5.Cells(i, 6) <> 0 Then
            min = Minimum(Feuil5.Cells(i, 5), min)
            min = Minimum(min, Feuil5.Cells(i, 6))
        End If
        i = i + 1
        NoLigneFin = NoLigneFin + 1
Loop
 
Graph7.Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MaximumScale = max + 10
ActiveChart.Axes(xlValue).MinimumScale = min - 10
Plage = "=" & Feuil5 & "!" & Cells(NoLigneDebut, 5).Address(ReferenceStyle:=xlR1C1) & ":" & Cells(NoLigneFin, 5).Address(ReferenceStyle:=xlR1C1)
ActiveChart.SeriesCollection(2).XValues = Plage
 
 
End Sub
Monte_Carlo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 19h40   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Tu pourrais organiser ton code comme ceci (le max et min pourrait être trouvés autrement i directement)

Je considère que ton graph7 contient au préalable 3 séries.
Code :
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
Public Sub GraphiqueMACD()
Dim i As Long, j As Long, LastLig As Long, FirstLig As Long
Dim Mx, Mn As Double
Dim Titre As String
 
With Feuil5
    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
    Mx = .Cells(1, 2)
    Mn = .Cells(1, 2)
 
    For i = 1 To LastLig
        If .Cells(i, 5) <> 0 Then
            FirstLig = i
            Exit For
        End If
    Next i
 
    For i = 1 To LastLig
        Mx = Maximum(.Cells(i, 2), Mx)
        Mx = Maximum(.Cells(i, 5), Mx)
        Mx = Maximum(Mx, .Cells(i, 6))
        Mn = Minimum(.Cells(i, 2), Mn)
        If .Cells(i, 5) <> 0 And .Cells(i, 6) <> 0 Then
            Mn = Minimum(.Cells(i, 5), Mn)
            Mn = Minimum(Mn, .Cells(i, 6))
        End If
    Next i
End With
'On pourrait chercher les maximums et minimums autrement
 
With UserForm1
    If .OptionButton1 Then
        Titre = "S&P 500"
    ElseIf .OptionButton2 Then
        Titre = "FTSE 100"
    ElseIf .OptionButton3 Then
        Titre = "DAX"
    ElseIf .OptionButton4 Then
        Titre = "CAC 40"
    End If
End With
 
With Graph7
    .ChartTitle.Text = "Evoltuion du " & Titre & " et MACD"
    .Axes(xlValue).MaximumScale = Mx + 10
    .Axes(xlValue).MinimumScale = Mn - 10
    .SeriesCollection(1).Name = "Cours " & Titre
    .SeriesCollection(2).Name = "Diff MME"
    .SeriesCollection(2).XValues = Feuil5.Range("E" & FirstLig & ":E" & LastLig)
    .SeriesCollection(3).Name = "Filtrage"
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/12/2011, 23h31   #5
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 28
Points : -9
Points : -9
très bien ça fonctionne merci beaucoup
Monte_Carlo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h01.


 
 
 
 
Partenaires

Hébergement Web