colorier des cellules vides en vb.net [Résolu]

Signaler
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
bonjour
j'ai un problème concernant le coloriage des cellules vides d'un datagridview.
je veus parcourir tous les cellules du datatgridview et à chaque fois où je trouve une cellules vide je lui affecte une coleure détérminé.
j'ai écrit le code suivant:
dim x as integer
dim y as integer

for x=0 to DataGridView.ColumnCount
For y = 0 To DataGridView.RowCount
Dim vv As Object = DataGridView.Item(x, y).Value
If vv Is DBNull.Value Then
DataGridView.Item(x, y).Style.BackColor = Color.Red
End If
Next
next

le problème de ce code c'est qui fait colorier seulement les cellules vides du premier colonne les autres cellules restent telle quelles sont.
donc la valeur de x ne s'incremente pas au cours de l'execution.
je sais où est le problème
est ce que quelqu'un a une idée?
merci d'avance
cordialement

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Bonjour,
DBNull correspond à une valeur inexistante, ce qui n'est pas pareil qu'une chaîne vide.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
48
Salut

D'abord sers toi du debugger
(outil indispensable pour le programmeur
mets un point d'arret à la ligne
for x=0 to DataGridView.ColumnCount 

lances le prog et à l'arret
avec le watch verifie les valeur x y
vv
verifie aussi le If vv Is DBNull.Value
avec le watch tout en continuant pas à pas F8

tu sauras au ce qui se passe
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011

bonjour
merci pour la réponce
j'ai pas mentionné que j'ai utulisé la condition suivante avant d'essayer avec dbNull
j'ai ecris:
if dataGridView.Item(x, y).Value=""
mais j'ai toujour une message d'erreur
je sais pas comment détécté une cellule vide . est ce que vous avez une idée
merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Re,

Tu as probablement à la fois des cellules contenant DbNull ert des cellules contenant une chaîne vide (EmptyString)
Il te faut donc agir dans un cas ET dans l'autre
Essaye donc :
If vv Is DBNull.Value Then
   DataGridView.Item(x, y).Style.BackColor = Color.Red
else if len(vv) = 0 then
   DataGridView.Item(x, y).Style.BackColor = Color.Red
End If 


Je n'y connais rien en VB.Net, mais je crois qu''il t'offre en plus (à voir) IsNullOrEmpty.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Cette ligne m'inquiète, par contre :
Dim vv As Object = DataGridView.Item(x, y).Value 

Ta datagridview contient des objets ? T'es sûr ?
C'est à mon avis là l'erreur principale
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient