"La somme des valeurs FillWeight des colonnes ne peut pas dépasser 65535" [Résolu]

rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 13 avril 2009 à 17:37 - Dernière réponse : rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention
- 16 avril 2009 à 16:02
Bonjour ,
dans mon programme  VB.net (2005) je manipule des matrices de 1500 lignes et 2000 colonnes et j doit les multiplier . donc lors de l'exécusion j'ai l'erreur suivante  "La somme des valeurs FillWeight des colonnes ne peut pas dépasser 65535"
sachant que si je diminue le nombre de lignes et de colonne mon programme marche parfaitement.
c'est indispensable de faire ce calcul ,si quelqu'un peut m'aider pour changer la taille des données de 16 à 32 bit .
car si j'ai bien compris ce message est du aux dépassement de la taille des 65535 caractères maximum autorisés

<li>
Avec 16 bits=65536 valeurs.
</li><li>
Avec 32 bits=4294967296 valeurs.
</li>Pouvez vous m'aider?
Afficher la suite 

Votre réponse

15 réponses

cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 16 avril 2009 à 11:00
+3
Utile
Ok, je pense avoir compris.

Tu dois certainement avoir quelque part dans ton code cette ligne :
D3.ColunmsCount = n

Tu dois la supprimer, c'est elle qui te crée les 1500 colonnes et qui génère l'erreur.

Il faut créer les colonnes, une à une, en les modifiant imédiatement :

        '******colonne
        For k = 0 To n
            D3.Columns.Add(D1.items(0,k).value, "")
            D3.Columns(k).FillWeight = 1
        Next

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 14 avril 2009 à 17:18
0
Utile
Ton problème est du la la valeur de la propriété FillWeight de chacune de tes colonnes (et n'a rien à voir avec un quelconque nombre de caractères).
Cette propriété est utilisée lorsque tu spécifie certains modes de remplissage automatique à ta grille (redimensionnement automatique des colonne pour que toutes soient affichées).
La valeur par défaut est de 100, ce qui te permet de créer 655 colonnes.

Si tu n'utilise pas ces modes de remplissages, spécifie une valeur de 1 à la propriété FillWeight de chacune de tes colonnes

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 14 avril 2009 à 17:24
0
Utile
Bonjour,

Merci pour ta réponse. oui peut être ca le probléme mais escque vous pouvez mieux m'expliquer comment je peut changer cette valeur (100)

et j'ai pas bien compris  " Si tu n'utilise pas ces modes de remplissages, spécifie une valeur de 1 à la propriété FillWeight de chacune de tes colonnes"

où je peut trouvé cette propriété pour la changer?
Merci d'avance
Commenter la réponse de rahma_bou22
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 14 avril 2009 à 17:44
0
Utile
Le mode de remplissage concerné est le mode "Fill".
Ce mode est défini soit au niveau de la colonne par la propriété AutoSizeMode, soit au niveau de la propriété AutoSizeColumnsMode de la grille si la propriété de la colonne est sur "NoSet"

Si l'une de ces 2 propriétés est sur le mode Fill, la propriété FillWeight de la colonne sera utilisée pour déterminer la largeur à donner à la colonne par rapport aux autres colonnes.

Si tu n'utilise pas ces modes de remplissage, la propriété FillWeight de la colonne ne sert à rien. Tu peux donc y mettre la valeur 1 dedant (0 n'est pas accepté).

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 15 avril 2009 à 16:03
0
Utile
Bonjour,
Merci pour vous réponses.
la création de ma datgridview3 se fait automatiquement elle comporte :
<li>n=1500 colonns prise de datagridview1</li><li>m=70 ligne prise de datagridview2
</li>'******colonne
for k=0 to n
datagridview3.colunms(k).name=datagridview1.items(0,k).value
Next
'********ligne
for l=0 to m
datgrid3.Rows.Add()

datagridview3.items(0,l).value=datagridview2.items(0,l).value

Next

Est ce que vous pouvez me pressier ou je peut modifier la propriété FillWeight.

j'ai fait cette modification et ça na pas marcher :
'******colonne

for k=0 to n
datagridview3.colunms(k).fillweight=1

datagridview3.colunms(k).name=datagridview1.items(0,k).value

Next

Mais le même message d'erreur s'affiche 
Commenter la réponse de rahma_bou22
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 15 avril 2009 à 17:54
0
Utile
C'est au moment de la création de la colonne qu'il faut spécifie la propriété

Tu ne montre pas ici le code qui te sert à créer tes 1500 colonnes.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 15 avril 2009 à 17:59
0
Utile
je l'ai pas crée mais dans la proprité DataBindings de datagridview j'ai choisi la table de ma base de données qui contient 1500 ligne ( SQL server).et c'est automatiquement j'aurais les données de ma table afficher dans la datagridview.
Commenter la réponse de rahma_bou22
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 15 avril 2009 à 21:08
0
Utile
Je comprend pas bien comment tu fais.

A ma connaissance, dans la propriété DataBindings, il n'est pas possible de créer de lien avec une source de données de sorte qu'une ligne de la source donne la création d'une colonne dans la datagrid

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 15 avril 2009 à 21:42
0
Utile
oui je ne fait que choisir la table source dans la propriété DataBindings et la table source sera automatiquement copier dans la Datagridview destination . sans préciser ni le nombre de ligne ni colonne ,je n'écris aucune ligne de code.
Est-ce que vous m'avez compris?
Commenter la réponse de rahma_bou22
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 15 avril 2009 à 22:32
0
Utile
Cela signifie donc que tu as plus 1500 colonnes dans ta table ? c'est possible ça?

Si c'est le cas, je vois pas trop comment faire, vu que le chargement est automatique. A part créer manuellement les 1500 colonnes dans la datagridview. A condition que lors de chargement celle-ci ne soit pas automatiquement réinitialiser.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 15 avril 2009 à 23:02
0
Utile
non  j'ai n=1500 ligne d'une table M1 copier automatiquement dans une Datagridview D1
 et m=70 ligne d'une table M2 copier automatiquement dans une Datagridview D2.
et  la datgridview D3 contient 1500 colonnes( qui sont des ligne dans D1) de D1 et 70 lignes de D2.

'******colonne
for k=0 to n
D3.colunms(k).name=D1.items(0,k).value
Next
'********ligne
for l=0 to m
D.Rows.Add()
D.items(0,l).value=D2.items(0,l).value
Next

Vous m'avez compris?
Commenter la réponse de rahma_bou22
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 16 avril 2009 à 11:17
0
Utile
Merci pour ton effort et ton intérêt .
je vais essayer votre solution.
Commenter la réponse de rahma_bou22
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 16 avril 2009 à 12:09
0
Utile
c'est très bien marcher .Merci pour votre aide.
est ce que vous savez comment je peut écrire dans la zone grise de la datagridview (premier colonne par défaut ) .
Commenter la réponse de rahma_bou22
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 16 avril 2009 à 14:03
0
Utile
Exemple :

        For k = 0 To D3.Rows.Count - 1
            D3.Rows(k).HeaderCell.Value = k.ToString
        Next

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
rahma_bou22 21 Messages postés mardi 19 décembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 16 avril 2009 à 16:02
0
Utile
non ça na pas marcher
Commenter la réponse de rahma_bou22

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.