Remplir les cellules de datagrid une par une

Signaler
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011
-
ccito
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
-
salut,
jai un datagrid que je veut la remplir cellule par cellules
j'ai ecrit le code suivant pour verifier si c'est possible:
For i = 0 To 6
For j = 0 To 6

DataGridView1.Item(i, i).Value = i+j
Next
Next
mais ce code n'est pas excutable il m'affiche l'erreur suivant:
pour L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection. Nom du paramètre : index
est ce que quelq'un peut m'aider?
merci d'avance.

10 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
Salut

Es-tu sûr que les colonnes et lignes soient numérotées à partir de 0 dans un DataGrid ?

Es-tu sûr que ton DataGrid contienne 7 colonnes et 7 lignes ?

Item(i, i)
serait plutôt
Item(i, j)
non ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011

salut
oui vous avez raison concernant item(i,i) c'est plutot item(i,j). mais c'est pas là le probleme. j'ai telechargé un cour vb.net dans lequel je trouve le code suivant:
datagrid.item(_,_).value=... ça veut dire qu'on peut enforcer à une cellule particulière de prendre un tel valeur ou donnée alors qu'à l'execution chez moi il m'affiche le msg d'erreur que je vous ai indiqué cidessus.
meme si j'enleve les boucles et je met seulement datagridview1.item(1,1)= 1
le meme msg sera affiché
où est donc le probleme ?
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
1
Bonjour,

Ne faut-il pas utiliser la fonction datagridview1.rows.Add() afin d'ajouter une ligne au datagridview ? Ensuite tu pourras remplir la case.
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011

bonjour et merci pour l'aide
l'ajout de : datagridview1.rows.add()me permet d'avoir une resultat mais pas de la resoudre . ma probleme c'est comment specifier la case en fonction de i et j . je veut que ça sera automatique c'est à dira à la place d'ecrire

datagridview1.item(0,1).value=...
datagridview1.item(0,2).value=....
datagridview1.item(1,1).value=...
...
j'ecrit par exemple datagridview1(i,j)=....., et en fonction de i et j la cellule se change
est ce que quelqu'un peut m'aider.
merci
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
1
Bonjour,

La syntaxe doit plutot être DataGridView1.Rows(i).Cells(j).
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
1
.value=...

désolé, j'ai envoyé trop vite
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011

salut
j'ai essayé avec datagridview.row(i).cells(j).value=...
mais c'est toujours le meme message qui s'apparu:L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection. Nom du paramètre : index.
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
1
Peut-tu détailler ton Datagridview. Combien de ligne et combien de colonnes ?
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011

salut
j'ai juste déclaré une datagrid qui est vide au début
et je veut la remlir d'une façon automatique comme je l'ai montré dans mon code
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
1
Salut,

Si ton datagrid est vide il faut d'abord que tu ajoute les colonnes et les lignes avant de le remplir. Tu ne peux pas remplir un emplacement qui n'existe pas (d'où ton message de défaut).

Tu peut faire quelque chose comme :

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i = 0 To 6
            DataGridView1.Columns.Add("c" & i, "c" & i)
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i = 0 To 6
            For j = 0 To 6
                If DataGridView1.Rows.Count < i + 2 Then
                    DataGridView1.Rows.Add()
                End If

                DataGridView1.Item(j, i).Value = i + j
            Next
        Next
    End Sub
End Class