Récupérer les valeurs d'un tableau [Résolu]

Messages postés
10
Date d'inscription
dimanche 17 février 2008
Dernière intervention
5 avril 2008
- 26 févr. 2008 à 19:56 - Dernière réponse :
Messages postés
10
Date d'inscription
dimanche 17 février 2008
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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
4
Date d'inscription
dimanche 24 février 2008
Dernière intervention
12 mai 2009
- 26 févr. 2008 à 21:50
3
Merci
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

Merci Nenyan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Nenyan
Meilleure réponse
Messages postés
920
Date d'inscription
vendredi 3 août 2007
Dernière intervention
27 octobre 2008
- 26 févr. 2008 à 23:23
3
Merci
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

Merci Kristof_Koder 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Kristof_Koder
Messages postés
10
Date d'inscription
dimanche 17 février 2008
Dernière intervention
5 avril 2008
- 26 févr. 2008 à 22:55
0
Merci
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.
Commenter la réponse de cs_MacSIM51
Messages postés
10
Date d'inscription
dimanche 17 février 2008
Dernière intervention
5 avril 2008
- 27 févr. 2008 à 13:39
0
Merci
Merci Kistrof c'est parfait :)
Commenter la réponse de cs_MacSIM51

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.