Condition sur les cellules d'une colonne DataGridView

Résolu
elwadeh Messages postés 55 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 28 juin 2018 - 6 sept. 2017 à 00:43
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 7 sept. 2017 à 06:59
Bonsoir à tous,

j'ai un DataGridview avec une colonne où j'affiche les matricules des employés, alors je fais un test sur toutes les cellules de la colonne et si une cellule est vide alors la valeur sera "Null" et je mets une couleur Rouge, voilà le code :

For x As Integer = 0 To DGV.Rows.Count - 1
If DGV.Rows(x).Cells(2).Value = "" Then
DGV.Rows(x).Cells(2).Value = "Null"
DGV.Rows(x).Cells(2).Style.BackColor = Color.Red
MessageBox.Show("Attention le système a détécté un employé sans matricule ...", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)

End If
Next


maintenant le problème si toutes les cellules de la colonne sont vides je veux afficher un message au utilisateur :

MessageBox.Show("Erreur de système veuillez redémarrer l'application ...", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)

comment faire ce test ?

3 réponses

Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
6 sept. 2017 à 07:37
Bonjour

en utilisant ta méthode, tu peux faire ainsi
Dim AuMoins1PasNull as Boolean = False
For x As Integer = 0 To DGV.Rows.Count - 1
                If DGV.Rows(x).Cells(2).Value = "" Then
                    DGV.Rows(x).Cells(2).Value = "Null"
                    DGV.Rows(x).Cells(2).Style.BackColor = Color.Red
                        MessageBox.Show("Attention le système a détécté un employé sans matricule ...", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Else
                     AuMoins1PasNull = True
                End If
            Next  

If AuMoins1PasNull = False Then
    MessageBox.Show("Erreur de système veuillez redémarrer l'application ...", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If



Cependant s'embêter avec des Row, des Cells, des Value, éventuellement à convertir quand ça représente un nombre, une date etc... revient à ignorer tout les avantages de VB.Net et de l'objet.
En effet, si tu crées une classe Personnel, avec comme propriétés (au moins) toutes les colonnes que tu affiches, et que tu mets chaque instance (les lignes) dans une List(Of), tu gérerais la valeur "Null" dans la propriété Matricule, et pour afficher le message, il te suffirais d'une requête
If maListe.All(Function(x) x.Matricule = "Null") Then
     MessageBox.Show("Erreur de système veuillez redémarrer l'application ...", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If


Pour l'affichage dans le datagridview, deux options, le binding "direct"
datagridview1.DataSource = maListe

Ou le binding "personnalisable" via un BindingSource (voir un petit tuto ici)
0
elwadeh Messages postés 55 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 28 juin 2018 1
6 sept. 2017 à 17:25
bonjour,

je vous remercie whismeril pour votre réponse, mais le code que vous m'avez transmis fait le test si une cellule a la valeur "Null", pour ça j'ai pas de problème, moi ce que je veux c'est qu'il me test si toute les cellules de la colonne ont à la fois la valeur "Null".


merci d'avance
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
6 sept. 2017 à 19:44
Non non, le message ne s'affiche que si les valeurs sont toutes null
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024
6 sept. 2017 à 22:36
bonsoir à vous deux !

Elwadeh : enlevez le
MessageBox.Show 
qui est dans la boucle For Next et vous verrez que Whismeril dit juste
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
7 sept. 2017 à 06:59
Salut VB, ha oui, je n'ai pas touché à ce MessageBox là....
0
elwadeh Messages postés 55 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 28 juin 2018 1
6 sept. 2017 à 23:22
Bonsoir,

oui c'est juste le MessageBox qui a bloqué le test, merci infiniment
Whismeril et vb95
0
Rejoignez-nous