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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| Imports System.Data.OleDb
Imports System
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim TesDonnées As New DataTable
TesDonnées.Columns.Add("ANNEE")
TesDonnées.Columns.Add("BTA")
TesDonnées.Columns.Add("OTA")
TesDonnées.Rows.Add(2011, 51560, 0)
TesDonnées.Rows.Add(2012, 119400, 0)
TesDonnées.Rows.Add(2013, 301000, 49011)
TesDonnées.Rows.Add(2014, 257400, 407056)
TesDonnées.Rows.Add(2015, 430100, 156760)
TesDonnées.Rows.Add(2016, 796765, 194657)
TesDonnées.Rows.Add(2017, 843941, 944800)
TesDonnées.Rows.Add(2018, 1538097, 110731)
TesDonnées.Rows.Add(2019, 1577678, 344345)
'----------------------------------------------------------------
Dim PourL_Affichage As New DataTable
PourL_Affichage.Columns.Add("ANNEE")
PourL_Affichage.Columns.Add("BTA")
PourL_Affichage.Columns.Add("OTA")
Dim Liste_pour_la_correction_des_couleurs As New List(Of Byte)
Chart1.Series.RemoveAt(0)
Chart1.Series.Add("BTA")
Chart1.Series.Add("OTA")
Chart1.Series("BTA").XValueMember = "ANNEE"
Chart1.Series("BTA").YValueMembers = "BTA"
Chart1.Series("OTA").XValueMember = "ANNEE"
Chart1.Series("OTA").YValueMembers = "OTA"
Chart1.Series(0).ChartType = SeriesChartType.StackedBar
Chart1.Series(1).ChartType = SeriesChartType.StackedBar
'Superposition des valeurs
For Each item As DataRow In TesDonnées.Rows
Dim A As Double = item(1)
Dim B As Double = item(2)
Dim couleur As Byte = 0
If B > A Then
B -= A
PourL_Affichage.Rows.Add(item(0), A, B)
ElseIf A > B Then
A -= B
couleur = 1
PourL_Affichage.Rows.Add(item(0), B, A)
Else 'A = B donc
B = 0
couleur = 2
PourL_Affichage.Rows.Add(item(0), A, B)
End If
Liste_pour_la_correction_des_couleurs.Add(couleur)
Next
Chart1.DataSource = PourL_Affichage
'j'utilise un ptit thread pour ça car j'ai la flemme d'aller chercher l'event de quand le Chart1 finnit de se charger
Dim ttt As New Threading.Thread(Sub()
Threading.Thread.Sleep(100)
Me.Invoke(Sub()
'Correction des Couleurs
For i = 0 To Liste_pour_la_correction_des_couleurs.Count - 1
If Liste_pour_la_correction_des_couleurs(i) = 0 Then
Chart1.Series(0).Points(i).Color = Color.RoyalBlue
Chart1.Series(1).Points(i).Color = Color.Orange
ElseIf Liste_pour_la_correction_des_couleurs(i) = 1 Then
Chart1.Series(0).Points(i).Color = Color.Orange
Chart1.Series(1).Points(i).Color = Color.RoyalBlue
Else 'si A et B ont la même valeur je vais collorier la barre en rouge
Chart1.Series(0).Points(i).Color = Color.Red
End If
Next
End Sub)
End Sub) : ttt.Start()
End Sub
End Class |
Partager