HELP EN VBA: Comment définir une function ou variable qui renvoie plusieurs répo
Patoche99
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention26 avril 2005
-
2 févr. 2005 à 18:37
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDerniè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.
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.
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.
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 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