Bonjour à tous, je reviens avec une question mais cette fois je n'y arrive vraiment pas :

Tous d'abord pour présenter un peu le contexte, l'utilisateur à la possibilité d'activer ou désactiver chacune de ces ChekedBox en directement depuis le DataGridView, j'ai aussi une bouton qui sélectionne (active) toutes les CheckedBox et un autre qui désactive.
Ca ne semble vraiment pas compliqué et pourtant j'ai un mal fou à trouver la solution. en effet lorsque je sélectionne par exemple 2 case à cochées et ensuite je clique sur le bouton pour les désactiver "countSelected" me compte non pas 0 mais 4 CheckedBox activé du fait que je ne récupère pas la bonne valeur du CheckedBox dans l'event CellValueChanged.

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
 
 Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
        If DataGridView1.IsCurrentCellDirty Then
            DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
        End If
    End Sub
 
  Private countSelected As Integer
    Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
        If DataGridView1.Columns(e.ColumnIndex).Name = "MaColonne" And TypeOf (DataGridView1.CurrentCell) Is DataGridViewCheckBoxCell Then
            Dim checkBoxCell As DataGridViewCheckBoxCell = CType(DataGridView1.CurrentCell, DataGridViewCheckBoxCell)
            Dim Selec As Boolean = CBool(checkBoxCell.Value)
            If Selec Then
                countSelected += 1
            Else
                countSelected -= 1
            End If
            'MessageBox.Show(CStr(countSelected))
        End If
    End Sub
 
  Private Sub btDeselectAll_Click(sender As Object, e As EventArgs) Handles btDeselectAll.Click
        For Each Row As DataGridViewRow In DataGridView1.Rows
            If Not Row.Cells("MaColonne").ReadOnly = True Then
                Dim Selec As Boolean = CBool(Row.Cells("MaColonne").Value)
                If Selec Then
                    Row.Cells("MaColonne").Value = False
                End If
            End If
        Next
        MessageBox.Show(CStr(countSelected))
    End Sub
Merci beaucoup pour votre aide.