Bonjour

j'ai un DataGridView dont certaines colonnes sont de type 'liste déroulante'

j'ai cherché longtemps comment récupérer le 'SelectedIndex' pour une cellule donnée... je ne suis pas le seul à m'être posé la question

voici une solution simple

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
Private Function Grille_GetSelectedIndex(c As Integer, r As Integer) As Integer
        Dim col As DataGridViewComboBoxColumn
        If Grille.Item(c, r).Value Is Nothing Then
            Grille_GetSelectedIndex = -1
        Else
            col = E5_Grille.Columns(c)
            Grille_GetSelectedIndex = col.Items.IndexOf(Grille.Item(c, r).Value)
        End If
End Function
Grille est un DataGridView de 'n' colonnes et 'm' lignes.

Il faut appeler la fonction Grille_GetSelectedIndex(c , r) avec 'c' le n° de la colonne (de 0 à n-1) et 'r' le n° de la ligne (de 0 à m-1); bien entendu 'c' doit correspondre à une colonne de type liste déroulante.

Si vous avez plusieurs DataGridView, modifiez la fonction pour que Grille soit passé en paramètre.

La fonction renvoie -1 si aucune entrée de la liste déroulante n'est sélectionné, ce comportement est le même que VB5 et VB6 ce qui peut aider beaucoup si vous devez utiliser du code ancien.

A+