bonjour,
je cherche a faire des statistiques dans une application et de les représenter par "camembert".

Voila ce que je cherche à faire :

Un datagrid un alimenté avec les données de la bdd. Une sélection de la ligne en cours est effectué, la les différents paramètres apparaissent dans des textbox , les différents label indiquant les pourcentage sont renseignés, mais les camembert ne bouge pas.

Je pense que la valeur qui permet de faire varier l'angle n'est pas prise en compte.

Je vous joint une partie du code de ce que j'ai déja fait.

PS : je suis pas un expert, indulgence.

Partie datagrid et calcul

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  Private Sub DataGrid2_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGrid2.MouseUp
        Dim ligneencours1 As Integer

        On Error GoTo gestionErreurs
        Dim X As Integer = 9
        'recupérer les coordonnées de la souris 
        Dim p = New Point(e.X, e.Y)
        'déterminer la partie clickée du datagrid
        Dim HTI As DataGrid.HitTestInfo = DataGrid2.HitTest(p)
        'si c'est un type 'cellule' 
        If (HTI.Type = DataGrid.HitTestType.Cell) Then

            'définir la cellule en cours 
            DataGrid2.CurrentCell = New DataGridCell(HTI.Row, HTI.Column)
            'selectionner la ligne correspondante 
            DataGrid2.Select(HTI.Row)
        End If
        ligneencours = DataGrid2.CurrentRowIndex
        Me.TextBox1.Text = DataGrid2.Item(ligneencours, 1).ToString()
        Me.TextBox6.Text = DataGrid2.Item(ligneencours, 17).ToString()
        Me.TextBox8.Text = DataGrid2.Item(ligneencours, 18).ToString()
        Me.TextBox2.Text = DataGrid2.Item(ligneencours, 21).ToString()
        Me.TextVIP.Text = DataGrid2.Item(ligneencours, 4).ToString()
        Me.TextLatBois.Text = DataGrid2.Item(ligneencours, 5).ToString() '
        Me.TextLatBet.Text = DataGrid2.Item(ligneencours, 6).ToString()
        Me.TextGradinAssis.Text = DataGrid2.Item(ligneencours, 7).ToString()
        Me.TextGradinDebout.Text = DataGrid2.Item(ligneencours, 8).ToString()
        Me.TextPelouse.Text = DataGrid2.Item(ligneencours, 9).ToString()
        Me.NbEntrée.Text = DataGrid2.Item(ligneencours, 3).ToString()
        Me.TextTotalJour.Text = DataGrid2.Item(ligneencours, 16).ToString()
        Me.TextBox3.Text = DataGrid2.Item(ligneencours, 0).ToString

gestionErreurs:

        Select Case Err.Number
            Case 9

        End Select
        Dim MyConnexion3 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Application.StartupPath & "\Spectateur.mdb;Jet OLEDB:Database Password=philguio;")
        Dim Mycommand3 As OleDbCommand = MyConnexion3.CreateCommand()
        Dim nbbois As Integer


        MyConnexion3.Open()
        Mycommand3.CommandText = " SELECT COUNT(TRIBUNE) AS TOTAL FROM T_TRIBUNE  WHERE TRIBUNE = 'TRIBUNE LATERALE BOIS'"
        Dim myReader3 As OleDbDataReader = Mycommand3.ExecuteReader()

        myReader3.Read()

        nbbois = myReader3.GetValue(0)



        myReader3.Close()

        MyConnexion3.Close()

      
        Dim MyConnexion5 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Application.StartupPath & "\Spectateur.mdb;Jet OLEDB:Database Password=philguio;")
        Dim Mycommand5 As OleDbCommand = MyConnexion5.CreateCommand()


        MyConnexion5.Open()
        Mycommand5.CommandText = " SELECT NbplaceLateraleBois FROM T_RECETTE  where N° = " & TextBox3.Text & ""
        Dim myReader5 As OleDbDataReader = Mycommand5.ExecuteReader()

        myReader5.Read()

        Nbentrébois = myReader5.GetValue(0)

        calbois = 258
        Me.Label5.Text = FormatNumber(((Nbentrébois / calbois) * 100), 1) & "%"
        CalculAngle3 = FormatNumber(((Nbentrébois / calbois) * 100), 1)
        myReader5.Close()

        MyConnexion5.Close()

    End Sub
Partie permettant de faire les camemberts

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
Public Sub FillPieRectangle2(ByVal e As PaintEventArgs)

        Dim redBrush As New SolidBrush(Color.Red)
        Dim greenBrush As New SolidBrush(Color.Green)
        Dim rect As New Rectangle(600, 450, 200, 100)
        Dim alpha As String
        alpha = FormatNumber(CalculAngle3, 1)
        Dim startAngle As Single = 0.0F
        Dim sweepAngle As Single = alpha
        Dim sweepAngle1 As Single = 360

        e.Graphics.FillPie(greenBrush, rect, startAngle, sweepAngle1)
        e.Graphics.FillPie(redBrush, rect, startAngle, sweepAngle)
    End Sub
    Private Sub Form_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

        FillPieRectangle(e)
        FillPieRectangle1(e)
        FillPieRectangle2(e)

    End Sub
Merci de me donner une piste une idée
@+
Philippe