Ms flex grid

cs_Fleur54 Messages postés 6 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 13 février 2004 - 11 févr. 2004 à 15:09
cs_sylvain75 Messages postés 2 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 12 février 2004 - 12 févr. 2004 à 08:01
bonjour
je dois crée un tableau sous msflex grid mais je ne sais pas remplir les cases internes. ce que je veux c'est que les cases soient égales à la somme des entetes de ligne et de colonnes.
Pour ce faire j'ai élaboré un petit test qui ne marche pas pour essayer de trouver la solution. Ce petit prog ne calcule pas les bonnes choses.

Private Sub form_load()

essai.Row = 0
essai.Col = 1
essai.Text = 13
essai.Col = 2
essai.Text = 14
essai.Col = 3
essai.Text = 15

essai.Col = 0
essai.Row = 1
essai.Text = 4
essai.Row = 2
essai.Text = 5
essai.Row = 3
essai.Text = 6

fillcells
End Sub

Public Sub fillcells()
For colcounter = 1 To 3 Step 1
essai.Col = colcounter
For rowcounter = 1 To 3 Step 1
essai.Row = rowcounter
essai.Text = essai.Row + essai.Col
Next rowcounter
Next colcounter
End Sub

ainsi dans la premiere cellule de la colonne il devrait mettre 17 alors qu'il affiche 17. Moi je voudrais pouvoir calucler les valeurs des cellules sans le faire manuellement car en réalité j'ai un tableau de 9990 valeurs.

merci beaucoup par avance.

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 févr. 2004 à 18:28
Salut Fleur54

Regarde de plus près le TextMatrix(Ligne, Col)
Tu peux récupérer ou écrire dans une cellule sans t'y positionner.

Vala
Jack
0
cs_sylvain75 Messages postés 2 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 12 février 2004
11 févr. 2004 à 18:38
Salut Fleur54

une solution que j'ai testée qui doit correspondre à ton pb
Private Sub Form_Load()
essai.Row = 0
essai.Col = 1
essai.Text = 13
essai.Col = 2
essai.Text = 14
essai.Col = 3
essai.Text = 15

essai.Col = 0
essai.Row = 1
essai.Text = 4
essai.Row = 2
essai.Text = 5
essai.Row = 3
essai.Text = 6
fillcells
End Sub

Public Sub fillcells()
For colcounter = 1 To 3
essai.Col = colcounter
For rowcounter = 1 To 3
essai.Row = rowcounter
essai.Text = Val(essai.TextMatrix(0, colcounter)) + Val(essai.TextMatrix(rowcounter, 0))
Next rowcounter
Next colcounter
End Sub

Sylvain75
0
cs_sylvain75 Messages postés 2 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 12 février 2004
12 févr. 2004 à 08:01
Salut Fleur54
Effectivement Val ne convertit pas les nombre décimaux, donc il faut utiliser la fonction CDBL. attention il ne faut pas avoir de colonnes vides. J'ai modifié ta technique de remplissage de tableau qui me semble un peu fastidieuse
Salut et bon courage
Sylvain75

Option Explicit
Dim u As Double
Dim v As Double
Dim x As String
Dim f_x As String
Dim a(8), i As Double

Private Sub form_load()
Dim i As Integer
'initialisation des valeurs v

tbl.Row = 0
For i = 1 To 9
tbl.Col = i
tbl.Text = i / 1000
Next i

'initialisation des valeurs u
tbl.Col = 0

For i = 1 To 100
tbl.Row = i
tbl.Text = (i - 1) / 100
Next i

'initialisation du tableau
a(1) = -0.577191652
a(2) = 0.988205891
a(3) = -0.897056937
a(4) = 0.918206857
a(5) = -0.756704078
a(6) = 0.482199394
a(7) = -0.193527818
a(8) = 0.035868343

'affichage du tableau
For i = 1 To 8
List1.AddItem a(i)
Next i

FillCells

End Sub
Private Sub CmdClick_Click()

'calculer et afficher f(x)
For u = 0 To 1 Step 0.01
For v = 0.001 To 0.01 Step 0.001
x = u + v
x = Round(x, 3)
List2.AddItem x
f_x = (((((((((((((((a(8) * x) + a(7)) * x) + a(6)) * x) + a(5)) * x) + a(4)) * x) + a(3)) * x) + a(2)) * x) + a(1)) * x) + 1
f_x = Round(f_x, 6)
List3.AddItem f_x
Next v
Next u



End Sub
Private Sub FillCells()
Dim RowCounter
Dim ColCounter
For ColCounter = 1 To 9 Step 1
tbl.Col = ColCounter
For RowCounter = 1 To 100 Step 1
tbl.Row = RowCounter
tbl.Text = (CDbl(tbl.TextMatrix(0, ColCounter))) + (CDbl(tbl.TextMatrix(RowCounter, 0)))
Next RowCounter
Next ColCounter
End Sub
0
Rejoignez-nous