elwadeh
Messages postés55Date d'inscriptionsamedi 11 avril 2009StatutMembreDernière intervention28 juin 2018
-
6 sept. 2017 à 00:43
Whismeril
Messages postés18797Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 décembre 2023
-
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)
Whismeril
Messages postés18797Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 décembre 2023645 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)
elwadeh
Messages postés55Date d'inscriptionsamedi 11 avril 2009StatutMembreDernière intervention28 juin 20181 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
Whismeril
Messages postés18797Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 décembre 2023645 6 sept. 2017 à 19:44
Non non, le message ne s'affiche que si les valeurs sont toutes null
vb95
Messages postés3441Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention 3 décembre 2023165
>
Whismeril
Messages postés18797Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 décembre 2023 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
Messages postés18797Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 décembre 2023645
>
vb95
Messages postés3441Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention 3 décembre 2023 7 sept. 2017 à 06:59
Salut VB, ha oui, je n'ai pas touché à ce MessageBox là....