Récupérer les valeurs d'un tableau

Résolu
cs_MacSIM51 Messages postés 10 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 5 avril 2008 - 26 févr. 2008 à 19:56
cs_MacSIM51 Messages postés 10 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 5 avril 2008 - 27 févr. 2008 à 13:39
Bonjour,

je reviens encore une fois demander votre aide..

Cette fois, pour l'utlisation des Tableaux. J'ai bien compris leurs utilisation et leurs fonctionnement, mais il me reste un problème :

    - Si je fais une fonction qui retourne un tableau, je n'arrive pas à "recevoir" les données retournées.

Exemple :

    Public Function mafonction (ByVal masource As String)
       Dim tab(5) As String

       'pour l'exemple
        For i = 0 To 5
            tab(i) = i
        Next i

       'et là je ne sais pas quoi mettre en return, ou du moins comment le receptionner
       return tab

    End Function

Donc, maintenant je veux pouvoir recevoir et afficher les valeurs retournées par le tableau, comment faire ? Est-ce que je dois créer un tableau de même dimenssion et il stockera automatiquement les valeurs aux mêmes indices ? A priori non car ça ne fonctionne pas.

Merci une fois de plus à vous tous ^^

Cdlt.

4 réponses

Nenyan Messages postés 4 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 12 mai 2009
26 févr. 2008 à 21:50
Sa fait un moment que je n'ai pas trop touché au Visual Basic, mais je ne pense pas qu'il soit possible de "retourner" un tableau, uniquement une valeur unique.

Par contre, ce que tu peux faire je pense, c'est de passer en argument le tableau que tu veux remplir, en utilisant le mot clé "ByRef", qui te permet de passer un argument par adresse, et non par valeur.

Par exemple, je prend un exemple simple :

Public Function ArgumentParValeur(ByVal A As Integer)
    A = 12
End Function
Public Function ArgumentParReference(ByRef A As Integer)
    A = 12
End Function

Si dans un morceau de code, tu appelle la fonction ArgumentParValeur en lui passant pour argument une variable de type Integer, et que tu teste la valeur de cette variable apres l'appelle de la fonction ArgumentParValeur, tu verra que la valeur de ta variable n'aura pas changé par rapport a sa valeur initiale.
En revanche, si tu appelle la fonction ArgumentParReference en lui passant une variable de type Integer, cette variable se vera affectée la valeur 12.

Donc je ne sais pas si tu peux faire sa, mais dans la définition de ta fonction :

Public TaFonction (ByRef MonTableau(5) As Integer)
  
    For I = 0 To 5
       MonTableau (I) = I
    Next I

End Function

Je n'ai pas de quoi tester mais je pense que cette methode sera la meilleure =)

Cordialement, Nenyan
3
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
26 févr. 2008 à 23:23
Ben si ! On peut tout à fait retourner un tableau depuis une fonction !

Voici ton code mis à jour :
Public Function mafonction(ByVal masource As String) As String()
Dim tab(5) As String, i As Long

'pour l'exemple
For i = 0 To 5
tab(i) = i.ToString
Next i
Return tab
End Function

juste 3 modif apportées :
1- penser à préciser le type retour de la fonction !
2- déclaration de i
3- conversion implicit de i en string avant stockage dans le tableau
a propos des point 2 et 3, je te conseille vivement de modifier les propriétés de ton projet en activant Option Explicit et Option Strict à On dans l'onglet Compilation
3
cs_MacSIM51 Messages postés 10 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 5 avril 2008
26 févr. 2008 à 22:55
Bonsoir, merci pour ta réponse.

En effet, j'avais pas pensé à passer par le passage par référence.. c'est une bonne solution qui me va à priori.
Si un jour ça peut aider quelqu'un, voici le final en exemple :

Dans le FormLoad :

'creation du tableau de 6 valeurs (0 à 5)
Dim tableau(5)
As
Integer
'affichage de la 4eme valeur du tableau d'origine
MessageBox.Show(tableau(3))
'appel de la fonction avec le passage du tableau en parametre
mafonction(tableau)
'affichage de la 4eme valeur du tableau pour voir qu'elle a bien changé
MessageBox.Show(tableau(3))

La fonction :

'creation de la fonction avec le passage par reference du tableau
Public

Sub mafonction(
ByRef tableau()
As
Integer)

   Dim I
As
Integer
   For I = 0
To 5
      'on initialise le tableau avec i
      tableau(I) = I + 1

   Next I

End
Sub

Voilà, ça peut paraitre simple mais pour quelqu'un qui débute comme moi et qui cherche sans trouver, ça peut servir ;)

Encore merci à tous.
0
cs_MacSIM51 Messages postés 10 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 5 avril 2008
27 févr. 2008 à 13:39
Merci Kistrof c'est parfait :)
0
Rejoignez-nous