La référence d'objet n'est pas définie à une instance d'un objet
Fermé
Th3Rimas
-
Modifié par baladur13 le 30/03/2016 à 11:06
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 - 31 mars 2016 à 13:57
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 - 31 mars 2016 à 13:57
A voir également:
- La référence d'objet n'est pas définie à une instance d'un objet
- Vente objet occasion entre particulier - Guide
- Ouvrez ce fichier avec un éditeur de texte simple (bloc-notes, textedit, gedit, etc.) pour y découvrir le nom d’un objet. ✓ - Forum Études / Formation High-Tech
- Trouver un objet avec une photo - Guide
- Objet rare akinator ✓ - Forum Loisirs / Divertissements
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
3 réponses
Whismeril
Messages postés
19029
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 avril 2024
931
Modifié par Whismeril le 30/03/2016 à 10:46
Modifié par Whismeril le 30/03/2016 à 10:46
Bonjour
tout d'abord, c'est bien domage d'utiliser linq et de construire ta collection "à la main".
Intéresse toi au binding.
https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Le message d'erreur en lui même, veut dire qu'au moins un objet de la ligne vaut null (donc n'est pas définit)
Dans
dataGridView1.Rows[i] doit exister au vu de ta boucle
Donc soit
Pour savoir précisémement ou se situe le problème, quand le programme plante, survolle la ligne avec la souris et attends à chauqe élément se que t'indique l'info bulle. Si ça n'est pas assez parlant, espionne chaque partie
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
tout d'abord, c'est bien domage d'utiliser linq et de construire ta collection "à la main".
Intéresse toi au binding.
https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Le message d'erreur en lui même, veut dire qu'au moins un objet de la ligne vaut null (donc n'est pas définit)
Dans
d.codeart = dataGridView1.Rows[i].Cells[0].Value.ToString();
dataGridView1.Rows[i] doit exister au vu de ta boucle
Donc soit
- la collection de Cells n'est pas initialisée (normalement si)
- soit elle est vide, il n'y a donc pas de Cells[0] dans la collection (théoriquement ça n'est pas possible non plus)
- Soit il n'y a rien d'écrit dans la cellule et donc Value est null (probablement ça), et dans ce cas le binding l'aurait traité à ta place....
Pour savoir précisémement ou se situe le problème, quand le programme plante, survolle la ligne avec la souris et attends à chauqe élément se que t'indique l'info bulle. Si ça n'est pas assez parlant, espionne chaque partie
dataGridView1.Rows[i] dataGridView1.Rows[i].Cells[0] dataGridView1.Rows[i].Cells[0].Value
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Th3Rimas
Messages postés
12
Date d'inscription
mardi 29 mars 2016
Statut
Membre
Dernière intervention
2 mai 2016
31 mars 2016 à 12:35
31 mars 2016 à 12:35
Whismeril
Messages postés
19029
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 avril 2024
931
31 mars 2016 à 13:57
31 mars 2016 à 13:57
Ça ne répond pas à ma question, dans le commentaire numéro 6, je t'ai proposé 4 façons de faire, laquelle veux tu que je te montre?
Je ne redemanderai pas une fois de plus.
Je ne redemanderai pas une fois de plus.
30 mars 2016 à 11:47
d.codeart = dataGridView1.Rows[i].Cells[0].Value.ToString();
Au :
d.codeart = dataGridView1.Rows[i].Cells[0].ToString();
mais j'avais le meme probleme au 2eme ligne et je l'ai changer comme celui la mais un autre problem :
d.Qte = int.Parse(dataGridView1.Rows[i].Cells[3].ToString());
il m'a dit que le format de la chaine d'entre est incorrect
30 mars 2016 à 11:54
Là encore, le binding gérerait ça à ta place.
Je trouve toujours inutile de disposer d'outils performants et de ne pas s'en servir.....
30 mars 2016 à 12:02
30 mars 2016 à 12:32
Sinon vérifier que les cellules ne soient pas vides avant de tenter des affectations ou des conversions, avec un if sur Value, ou une fusion null https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-coalescing-operator ou un opérateur ternaire https://docs.microsoft.com/fr-fr/dotnet/csharp/language-reference/operators/conditional-operator
Sinon tu peux aussi faire TryParse, mais tu devras aussi faire un if dessus
31 mars 2016 à 09:49