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

Messages postés
55
Date d'inscription
samedi 11 avril 2009
Dernière intervention
28 juin 2018
- - Dernière réponse : Whismeril
Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
- 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

3 réponses

Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
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
Dernière intervention
28 juin 2018
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
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
-
Non non, le message ne s'affiche que si les valeurs sont toutes null
vb95
Messages postés
1735
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
18 décembre 2018
> Whismeril
Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
-
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
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
> vb95
Messages postés
1735
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
18 décembre 2018
-
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
Dernière intervention
28 juin 2018
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.