[VB6] TRANSMETTRE UN TABLEAU PAR PROCÉDURE

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 2 sept. 2010 à 11:55
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009 - 3 sept. 2010 à 13:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52249-vb6-transmettre-un-tableau-par-procedure

cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
3 sept. 2010 à 13:24
Bonjour,

d'accord avec Renfield. On peut s'en servir pour extraire des enregistrement sur une requête de BDD.
J'utilise aussi des tableaux de "type utilisateur"..
Mais pour ma part je préfère rendre le tableau lui même.
cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 septembre 2011
3 sept. 2010 à 10:54
Merci d'avoir apporter ces modifications Renfield ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 sept. 2010 à 11:55
j'avoue ne pas trop comprendre la chose...
un simple How-To sur comment renvoyer un tableau ?

nettoyons un peu le code...

completement contre-performant de faire ton Redim Preserve DANS la boucle.

alloue tes 10 Items AVANT la boucle, une fois pour toutes...

De plus, dans ton tableau, tu perds la case d'index 0 que tu ne remplis pas dans ta boucle For i = 1 To 10

Public Function Tableau_Procedure() As String()
Dim i As Long
Dim xsRet(9) As String
'# A voir si l'on a un nombre fixe d'element ou non...
'Dim xsRet() As String
'ReDim Tableau_Procedure(9)
For i = 0 To 9
xsRet(i) = "Item " & i
Next i
Tableau_Procedure = xsRet
End Function

'Dans un formulaire :
Private Sub Command1_Click()
Dim i As Long
Dim Tableau_Form() As String
Tableau_Form = Module1.Tableau_Procedure
For i = 0 To UBound(Tableau_Form)
List1.AddItem Tableau_Form(i)
Next i
End Sub

Personellement, je prefere ce genre de choses:

Public Function RemplirTableau(ByRef vxsRet() As String) As Long
Dim i As Long
'# A voir si l'on a un nombre fixe d'element ou non...
ReDim vxsRet(9)
For i = 0 To 9
vxsRet(i) = "Item " & i
Next i
'# Renvoie le nombre d'element du tableau
RemplirTableau = 10
End Function

'Dans un formulaire :
Private Sub Command1_Click()
Dim i As Long
Dim xsItems() As String
For i = 0 To RemplirTableau(xsItems) - 1
List1.AddItem xsItems(i)
Next i
End Sub
Rejoignez-nous