Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 13/12/2010, 11h58   #1
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Par défaut Modifier donnée sources d'un graphique

Bonjour,

Je ne suis pas sur d'être sur le bon forum.
J'ai hésitez avec celui sur le code VBA.

J'ai un graphique sur mon état auquel j'ai attribué du code pour modifier les couleurs, les axes etc.

Pour avoir mon état je doit choisir un paramêtre par une liste déroulante.
Donc mon graph change selon le choix.

Mon problème viens des couleurs.
Lorsque je choisi pour la première fois mon choix de ma liste déroulante, il n'y a pas de problème.
Mes barres ont les bonnes valeur et les couleurs corresponde à mes critère.
Mais lorsque je ferme mon état et que je le ré-ouvre avec un autre paramêtre les couleur ne sont pas bonne.
Il garde en mémoire celle du choix précédent.

J'ai testé mon programme pour afficher les valeur et je me suis rendu compte que le tableau, que l'on obtiens lorsque l'on fait "Objet chart" à partir du clic droit sur mon graphique, a garder les données du premier choix.
D'ou les mauvaise couleur mais par contre les barres et les valeurs (étiquette) qui s'affiche sur le graph sont correcte.
Je pense que pour que mon programme marche je dois vider le tableau et le re-remplir.
Or je ne sais pas le faire en vba.
Pouvez vous m'aider?
SI vous connaissez un autre moyen je suis preneur.
Je vous remercie.

PS: je vous met mon code.

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
Private Sub Report_Activate()
'----------------------graph-----------------------------------
 
Dim Graph1 As Graph.Chart
Dim oDataS  As Object
Dim noCourbe1 As Integer
Dim NomBarre, MOIS, sSQL1 As String
Dim p As String
'--------------parfums------------------------------------
p = [Forms]![Frm-Rendement-par-parfum].[lmd-parfums-rendement]
cc = DLookup("Cible", "Cible-rendement-sirop", "Nom='" & p & "'")
 
Set db = CurrentDb
Set Graph1 = Me.Graphique0.Object.Application.Chart
Set oDataS = Graph1.Application.DataSheet
 
'On compte le nombre de points (Barre) du graphique
For noCourbe1 = 2 To 55
 
NomBarre = oDataS.Cells(noCourbe1, 1).Value
ValBarre = oDataS.Cells(noCourbe1, 3).Value
'MsgBox (NomBarre & "--" & ValBarre & "--" & cc)
 
If ValBarre <> 0 Then
    If ValBarre >= cc Then
    Graph1.SeriesCollection(2).Points(noCourbe1 - 1).Interior.Color = RGB(0, 255, 0)
    ElseIf ValBarre < cc Then
    Graph1.SeriesCollection(2).Points(noCourbe1 - 1).Interior.Color = RGB(255, 0, 0)
    End If
End If
 
If p = "CO2" Then
Me.Graphique0.Object.Application.Chart.Axes(2).MinimumScale = 0.4
Me.Graphique0.Object.Application.Chart.Axes(2).MaximumScale = 1.2
Me.Graphique0.Object.Application.Chart.Axes(2).MajorUnit = 0.2
Else
Me.Graphique0.Object.Application.Chart.Axes(2).MinimumScale = 0.9
Me.Graphique0.Object.Application.Chart.Axes(2).MaximumScale = 1.06
Me.Graphique0.Object.Application.Chart.Axes(2).MajorUnit = 0.02
End If
 
Next
End sub
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 15h32   #2
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
J'ai trouvé une solution mais se n'est pas parfait.
Au lieu de récupérer les valeurs dans mon tableau source de mon graph je les récupèrent dans ma requête mais ca ralentit l'ouverture de l'état.

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
p = [Forms]![Frm-Rendement-par-parfum].[lmd-parfums-rendement]
cc = DLookup("Cible", "Cible-rendement-sirop", "Nom='" & p & "'")
 
Set db = CurrentDb
Set Graph1 = Me.Graphique0.Object.Application.Chart
Set oDataS = Graph1.Application.DataSheet
 
'On compte le nombre de points (Barre) du graphique
For noCourbe1 = 2 To 55
 
NomBarre = oDataS.Cells(noCourbe1, 1).Value
ValBarre = oDataS.Cells(noCourbe1, 3).Value
 
    If Len(NomBarre) = 1 Then
    NomBarre = "0" & NomBarre
    End If
V = DLookup("Tx", "rqt-pour-graph-plannif-rendement-par-parfum-2", "Sem='" & NomBarre & "'")
 
        If V <> 0 Then
            If V >= cc Then
            Graph1.SeriesCollection(2).Points(noCourbe1 - 1).Interior.Color = RGB(0, 255, 0)
            ElseIf V < cc Then
            Graph1.SeriesCollection(2).Points(noCourbe1 - 1).Interior.Color = RGB(255, 0, 0)
            End If
        End If
 
Next
 
If p = "CO2" Then
Me.Graphique0.Object.Application.Chart.Axes(2).MinimumScale = 0.4
Me.Graphique0.Object.Application.Chart.Axes(2).MaximumScale = 1.2
Me.Graphique0.Object.Application.Chart.Axes(2).MajorUnit = 0.2
Else
Me.Graphique0.Object.Application.Chart.Axes(2).MinimumScale = 0.9
Me.Graphique0.Object.Application.Chart.Axes(2).MaximumScale = 1.06
Me.Graphique0.Object.Application.Chart.Axes(2).MajorUnit = 0.02
End If
Si vous avez une meilleur solution qui me permettrais d'afficher mon état plus rapidement je suis preneur.
Merci
rob1son76 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 23h54.


 
 
 
 
Partenaires

Hébergement Web