Tableau

gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006 - 10 nov. 2006 à 13:13
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 13 nov. 2006 à 19:00
Rebonjour,

Voilà je n'arrive pas à affecter les données que je récupère de mon morceau de script dans un tableau (ex: Product()). Car en fait ce tableau je vais l'utiliser pour tracer des graphes. Auriez-vous la gentillesse de bien vouloir m'aidez SVP.
Merci d'avance.

Voici le code:

MSFlex_Rows = frmShiftReport.Adodc1.Recordset.RecordCount + 1
 
    If frmShiftReport.Adodc1.Recordset.RecordCount > 1 Then
    MSFlexGrid1.Rows = MSFlex_Rows
    ij = 1
        frmShiftReport.Adodc1.Recordset.MoveFirst
        Do While Not frmShiftReport.Adodc1.Recordset.EOF
       
            NbDoff = frmShiftReport.Adodc1.Recordset.Fields!DoffCNT
            YarnLength = frmShiftReport.Adodc1.Recordset.Fields!YarnLgth
            ShiftTime = frmShiftReport.Adodc1.Recordset.Fields!ShiftTIM
            YnCount = frmShiftReport.Adodc1.Recordset.Fields!YarnCount
            YnTitle = frmShiftReport.Adodc1.Recordset.Fields!YarnTitle
            Time = Format(frmShiftReport.Adodc1.Recordset.Fields![StartDate], "dd/mm/yyyy")
           
            KmLgth = ((NbDoff * YarnLength * YnCount) / ShiftTime) / 1000
            KgWeight = ((NbDoff * (YarnLength / 1000) * YnCount * (YnTitle / 1000)) / 10) / ShiftTime
            ShiftNumFor_1000km = ShiftTime / ((NbDoff * (YarnLength / 1000) * YnCount) / 1000)
            ShiftNumFor_1000kg = ShiftTime / ((NbDoff * (YarnLength / 1000) * YnCount * (YnTitle / 1000)) / 10000)


            'Affichage de la Date
            MSFlexGrid1.TextMatrix(ij, 1) = Time
           
            'Calcul pour la longueur de fils (km)
            MSFlexGrid1.TextMatrix(ij, 2) = Format(KmLgth, "##,##0.00")
          
            'Calcul pour le poids du fils (kg)
            MSFlexGrid1.TextMatrix(ij, 4) = Format(KgWeight, "##,##0.00")
           
            'Calcul du nombre d'équipe nécessaire pour réaliser 1000km
            MSFlexGrid1.TextMatrix(ij, 3) = Format(ShiftNumFor_1000km, "##,##0.00")
           
            'Calcul du nombre d'équipe nécessaire pour réaliser 1000kg
            MSFlexGrid1.TextMatrix(ij, 5) = Format(ShiftNumFor_1000kg, "##,##0.00")
           
            frmShiftReport.Adodc1.Recordset.MoveNext
            ij = ij + 1
          Loop
       MSFlex_Rows = ij
    End If

5 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
11 nov. 2006 à 00:45
Je ne comprend pas vraiment ce que tu veux faire (?)

Mais si tu veux créer un tableau à partir de ce code ou à partir de ce
que tu écris dans la grille, tu peux affecter les données au tableau au
fur et à mesure que tu charges ta grille (ou que tu lis les
enregistrements...)


Ça pourrait être fait en une séquence, une fois la grille remplie, mais
bon, allons-y durant le remplissage. (Prend note que je n'ai pas
testé...)


Au début

Dim Product()  'ton tableau

Dim PositionTableau as integer  'Index du dernier élément du tableau plus 1

Redim Product(0)  'initialise le tableau au départ


'début de ton code jusqu'avant le Movenext

.......

PositionTableau = ubound(product) ' peut-être +1 (?)

Redim Preserve Product(UBound(Product) + 6)  'alloue 6 espaces de plus au tableau

For i = 0 to 5  'si la grille contient 6 colonnes

product(PositionTableau + i) = MSFlexGrid1.TextMatrix(ij, i) 'copie des cellules

Next


frmShiftReport.Adodc1.Recordset.MoveNext

ij = ij + 1

Loop


Si j'ai mal compris le problème, n'hésite pas à ajouter des précisions
quant aux "données récupérées par ton script" et que tu veux mettre
dans un tableau.

MPi
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
13 nov. 2006 à 09:02
Bonjour MPI,


En fait ce que je fais c'est d'écrire directement dans la grille., Et mon but est de pouvoir recopier chaque colonnes de ma grille dans un tableau. 2tant donné que j'ai 6 colonnes c'est recopier les 6 colonnes dans le tableau Product().
Par rapport à ton script je ne comprend pas cette ligne:
product(PositionTableau + i) = MSFlexGrid1.TextMatrix(ij, i)
Est-ce-que le tableau est à une dimension???????

Parce qu'après je veux représenter graphiquement par exemple la colonne 1 avec la colonne 2:

Product (i,1)= Time
Product(i,2)= Format(KmLgth, "##,##0.00")
mscProdGraphic.Chardata= Product()
Mais apparemment les indices ne se correspondent pas: Erreur = Indice en dehors de la plage

Alors ma question est celle-ci: Si ton script permet de recopier tous ce j'ai dans ma grille dans un tableau alors comment je peux définir dans mon tableau les colonnes que je veux représenter graphiquement?

Merci pour ton aide précieuse
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
13 nov. 2006 à 11:40
Salut,


Mon tableau se voulait à une dimension. Je n'utilise jamais de tableau à plusieurs dimensions... question de choix


Si tu as 6 colonnes et que tu remplis le tableau ligne par ligne (de ta
grille), chaque élément d'une colonne aura un incrément de 6 dans le
tableau.

0 1 2 3  4   5

6 7 8 9 10 11


Donc pour lire une colonne par rapport à ton tableau (ici, la première)

For i = 0 to ubound(Product) step 6

    msgbox "Élément de la colonne choisie: " & Product(i)
next

Pour lire la deuxième colonne, il faut changer le 0 pour 1

MPi
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
13 nov. 2006 à 13:56
J'ai pu définir toutes les colonnes de mon tableau mais je n'arrive pas à représenter graphiquement ma colonne 1 en fonction de la colonne 2

For i = 1 to ubound(Product) step 6
    msgbox "Date: " & Product(i)
next i

For j = 2 to ubound(Product) step 6
    msgbox "ShiftKm: " & Product(j)
next j

Comment représenter Product(i) en fonction de Product(j) avec le ChartData. Franchement je découvre les tableaux dynamiques mais je ne pensais que ça allais être aussi compliquer que ça!
Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
13 nov. 2006 à 19:00
Je ne connais pas le ChartData...
Est-ce que ça lui prend un tableau à 2 dimensions nécessairement ?
Est-ce que 2 tableaux seraient mieux ou faisable ?
Est-ce que tu peux utiliser le même tableau 2 fois en allanat chercher les valeurs d'autres colonnes ?

Comme tu peux voir, je n'y connais pas grand chose...

Si ça te prend absolument un tableau à 2 dimensions, il faudrait peut-être le créer une fois la grille remplie plutôt qu'au fur et à mesure et choisir, par le fait même, les colonnes dont tu auras besoin.
    Dim Tablo()
    Dim Lignes As Long, Colonnes As Integer
   
    Lignes = MaGrille.Rows 
    Colonnes = MaGrille.Cols
    ReDim Tablo(Lignes, Colonnes)

   ' Il ne reste qu'à le remplir avec une double-boucle
   for i = 0 to MaGrille.Rows -1
      for J= 0 to MaGrille.Cols -1
         Tablo(I, J) = MaGrille.TextMatrix(I, J)
      next
   next

MPi
0
Rejoignez-nous