Manipulation de tableaux à double dimensions en VB6

stenshinn Messages postés 2 Date d'inscription mercredi 6 juillet 2005 Statut Membre Dernière intervention 20 juillet 2005 - 20 juil. 2005 à 10:44
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 20 juil. 2005 à 11:55
Bonjour,

mon pb concerne la manipulation des tableaux à double dimension en VB6,
ou plutôt je n'arrive pas à retourner à l'aide d'une fonction un
tableau à 2 dimensions.

Je ne sais pas comment faire car j'en ai besoin afin de simplifier mon code.

Voici un petit bout de code qui ne marche pas et je ne comprends pas why, qqun peut-il m'aider?

Sinon est possible de définir une classe dont les objets sont des matrices?



Merci d'avance, ;-)

J'espère que qqun va pouvoir m'aider car là je suis bien bloquée, dslée mais je ne connais pas très bien VB.





Function RemplirMatriceParametres(ByRef Param() As String)

'Function RemplirMatriceParametres(ByRef Param() As String, ByRef matrice() As String)

Dim MaMatrice(0 To 1, 0 To 5) As String



For i = 0 To 1

If (i = 0) Then

For j = 0 To 5

MaMatrice(i, j) = "para" & j + 1 '& i & j

'MsgBox (MaMatrice(i, j))

Next j

Else

For j = 0 To 5

MaMatrice(i, j) = Param(j) '& i & j

'MsgBox (MaMatrice(i, j))

Next j

End If

Next i



RemplirMatriceParametres = MaMatrice

End Function



Private Sub Form_Load()

Dim UneMatrice(0 To 1, 0 To 5) As String





Dim i, j, k As Integer

Dim mesParam(10) As String

For k = 0 To 5

mesParam(k) = k

'MsgBox (mesParam(k))

Next k





UneMatrice = RemplirMatriceParametres(mesParam)



End Sub

2 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
20 juil. 2005 à 11:47
Function RemplirMatriceParametres(ByRef Param() As String) As String()


Il faut un type de retour pour ta fonction.


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
20 juil. 2005 à 11:55
UneMatrice = RemplirMatriceParametres(mesParam)
tu ne peux pas affecter des valeurs à un tableau de cette manière


2e erreur : Dim mesParam(10) As String , mais tu les remplis d'integer k


les tableaux Vb peuvent contenir jusqu'à 60dimentions.
tes 2 dimentions sont loin d'en venir à bout, mais dès qu'il y a plus d'une dimention, tu ne peux pas, par exemple, supprimer "un ligne" en concervant les autres données.
pour cette raison essentiellement, il est préférable de déclarer un type particulier, avec toutes tes colonnes et leur type, armature de ton tableau :


Private Type MesColonnes
NomCol1 As String
NomCol2 As String
End Type



ensuite, ta fonction doit retourner le même type que le tableau


Private Function RemplirMatriceParametres(ByRef Param() As String) As MesColonnes

aussi, Dim i, j, k As Integer n'existe pas. c'est à dire que là, tu déclares i et j en variant, et k en integer
en une ligne, il faut :


dim i as Integer, j as Integer, k as Integer



ce qui donne, au final (sans fonction pour simplifier)


'Général Déclarations
Private Type MesColonnes
NomCol1 As String
NomCol2 As String
End Type



'Form Load
Private Sub Form_Load()
Dim MaMatrice(0 To 10) As MesColonnes
Dim mesParam(5) As String '6valeurs


Dim i As Integer, j As Integer
For i = 0 To 5
mesParam(i) = CStr(i) 'prend l'entier en chaine
Next i


For i = 0 To 1
If (i = 0) Then
For j = 0 To 5
MaMatrice(j).NomCol1 = i
MaMatrice(j).NomCol2 = "para" & j + 1
Debug.Print MaMatrice(j).NomCol2
Next j
Else
For j = 0 To 5
MaMatrice(j).NomCol2 = mesParam(j)
Debug.Print MaMatrice(j).NomCol2
Next j
End If
Next i
End Sub
'utilise Debug.Print pour avoir les résultat dans la fenêtre d'execution
'en bas de VB, plutôt que des msgbox à cliquer ;)
'cette fenêtre ne se vide qu'à la fermeture de ton projet.


résultat :
para1
para2
para3
para4
para5
para6
0
1
2
3
4
5



saches tout de même que j'ai repris ton exemple, et que là, tu écrases tes 6 première données...
En espérant que çà t'aide...


PCPT
0