Selection cellules dans datagridview

Résolu
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - Modifié le 8 déc. 2023 à 14:53
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 10 déc. 2023 à 10:09

Bonjour à Tous

je reviens vers vous pour solliciter votre aide

dans un datagridview je voudrais empêcher ou du moins mettre un message suivi d'un exit sub :

- si sélection simultanée de plusieurs cellules sur deux ou plusieurs lignes

-si sélection de plusieurs cellules sur toute colonne

Autoriser que la sélection de plusieurs cellules sur la même ligne .

ci dessous quelques capture pour illustrer .

merci de votre aide

une piste : j'ai tenté  ce code ci dessous (en vain ) pour détecter les ColumnIndex et rowindex afin de les comparer et déterminer les plages sélectionnées .

 For Each cell In DataGritable.SelectedCells
            MsgBox("ColumnIndex:   " & cell.ColumnIndex)
            MsgBox("RowIndex:   " & cell.rowIndex)
            

        Next

    End Sub

4 réponses

Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 931
8 déc. 2023 à 17:33

Bonjour

il existe une collection SelectedRows et une collection SelectedColumns.

Tu peux vérifier que seule l'une des 2 compte plus d'un item, dans l'événement SelectionChanged par exemple


0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
8 déc. 2023 à 23:09

le souci c'est que ces collections ( SelectedRows et SelectedColumns) ne fonctionnent qu'avec la propriété sélection mode sur FullRowSelect .

dans mon projet j'utilise la propriété sélection mode sur CellSelect..

0
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 931
9 déc. 2023 à 08:29

Bonjour

 peut-être à partir de ça

            Dim r_min = dataGridView1.Rows.Count()
            Dim r_max = -1
            For Each macell In dataGridView1.SelectedCells
                If macell.rowIndex < r_min Then r_min = macell.rowIndex
                If macell.rowIndex > r_max Then r_max = macell.rowIndex
            Next

            MessageBox.Show("Nombre de lignes : " + (r_max - r_min + 1).ToString())

0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
10 déc. 2023 à 10:09

Bonjour

Exactement ce qu'il me faut .

Un gros gros merci à toi.

Bon dimanche

0