HELP EN VBA: Comment définir une function ou variable qui renvoie plusieurs répo

Patoche99 Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 26 avril 2005 - 2 févr. 2005 à 18:37
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 - 2 févr. 2005 à 19:02
Bonjour,

Je me suis mis au VBA il une semaien car, je sois réaliser un travail important pour mes cours. Et j'ai un problème auquel je ne trouve pas de solution.

Disons que je voudrais déclarer une variable, fonction ou ce que vous proposer qui retournerait plusieurs valeurs possibles.

Plus précisément, disons que j'ai des boites "b" et des chemins "c" par lesquels je pourais envoyer mes boites. Sous un fichier exel c'est sour la forme Binaire. 1 si je peux envoyer par ce chemin.

Chemin1 Chemin2 Chemin 3 ....................;;
Boite 1 0 0 1
Boit3 2 1 1 1
Boute 3 1 0 1
....
...

J'aimerais aboutir à quelque chose du genre: Une fonction ou je sais pas quoi qui me retourne les chemins possibles en fonction de la boite que je veux envoyer.

CheminPossible (boite1) = (chemin3)
CheminPossible (boite2) = (chemin1, Chemin2, Chemin3)
CheminPossible(Boite3 )= (Chemin1, Chemin3)

Si quelqu un peut m'aider ce serait tres sympa...Il ne faut pas oublier que le le nombre de boite et de chemin varient en fonction des fichers que je dois traiter.

Le problème est qu' une fonction ou une variable ne peut renvoyer qu'une seule valeur et non un vecteur.

Merci D'avance !!!!!!!!!

Patrice

1 réponse

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 6
2 févr. 2005 à 19:02
Tu ne te serais pas endormi sur la touche Entrée par hasard ?
Sinon, la solution c'est une fonction qui renvoie un tableau :

Private Function lfct_Test(a_Boite As String) As String()
Dim ls_Result() As String
Select Case a_Boite
Case "boite1"
ReDim ls_Result(0)
ls_Result(0) = "chemin3"
Case "boite2"
ReDim ls_Result(2)
ls_Result(0) = "chemin1"
ls_Result(1) = "chemin2"
ls_Result(2) = "chemin3"
Case "boite3"
ReDim ls_Result(1)
ls_Result(0) = "chemin1"
ls_Result(1) = "chemin3"
End Select
lfct_Test = ls_Result
End Function


Public Sub Test()
Dim ls_Chemins() As String
Dim li_Index As Integer
Dim ls_Chem As String


'Affecte au tableau ls_Chemins, tous les chemins de boite2
ls_Chemins = lfct_Test("boite2")
'Parcourt tous les éléments du tableau
For li_Index = 0 To UBound(ls_Chemins)
ls_Chem = ls_Chem & ls_Chemins(li_Index) & vbCrLf
Next li_Index
MsgBox ls_Chem
End Sub
0