Condition sur les cellules d'une colonne DataGridView [Résolu]

Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
- - Dernière réponse : Whismeril
Messages postés
14036
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
- 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 ?
Afficher la suite 

3 réponses

Messages postés
14036
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
322
0
Merci
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)
Commenter la réponse de Whismeril
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
0
Merci
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
Whismeril
Messages postés
14036
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
322 -
Non non, le message ne s'affiche que si les valeurs sont toutes null
vb95
Messages postés
1980
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
8 décembre 2019
77 > Whismeril
Messages postés
14036
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
-
bonsoir à vous deux !

Elwadeh : enlevez le
MessageBox.Show 
qui est dans la boucle For Next et vous verrez que Whismeril dit juste
Whismeril
Messages postés
14036
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
322 > vb95
Messages postés
1980
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
8 décembre 2019
-
Salut VB, ha oui, je n'ai pas touché à ce MessageBox là....
Commenter la réponse de elwadeh
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
0
Merci
Bonsoir,

oui c'est juste le MessageBox qui a bloqué le test, merci infiniment
Whismeril et vb95
Commenter la réponse de elwadeh