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

elwadeh 55 Messages postés samedi 11 avril 2009Date d'inscription 28 juin 2018 Dernière intervention - 6 sept. 2017 à 00:43 - Dernière réponse : Whismeril 11966 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 août 2018 Dernière intervention
- 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 

Votre réponse

6 réponses

Whismeril 11966 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 août 2018 Dernière intervention - 6 sept. 2017 à 07:37
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
elwadeh 55 Messages postés samedi 11 avril 2009Date d'inscription 28 juin 2018 Dernière intervention - 6 sept. 2017 à 17:25
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 11966 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 août 2018 Dernière intervention - 6 sept. 2017 à 19:44
Non non, le message ne s'affiche que si les valeurs sont toutes null
vb95 1636 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 16 août 2018 Dernière intervention > Whismeril 11966 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 août 2018 Dernière intervention - 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
Whismeril 11966 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 août 2018 Dernière intervention > vb95 1636 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 16 août 2018 Dernière intervention - 7 sept. 2017 à 06:59
Salut VB, ha oui, je n'ai pas touché à ce MessageBox là....
Commenter la réponse de elwadeh
elwadeh 55 Messages postés samedi 11 avril 2009Date d'inscription 28 juin 2018 Dernière intervention - 6 sept. 2017 à 23:22
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.