Fonction VB renvoyant un tableau de variant

Fermé
therese94340 Messages postés 1 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 10 février 2007 - 10 févr. 2007 à 09:16
 alino-91 - 9 mai 2013 à 03:27
Bonjour,

je souhaite simplement créé une fonction VB qui me retourne un tableau de variant, je declare la fonction comme ci-dessous et je me prends l'erreur: "Erreur de compilation, argument non facultatif" .... Avez-vous une idée.

Merci pour votre aide.

Function montableau(param1 As String, param2 As String) As Variant()
Set montableau(1) = param1
Set montableau(2) = param2
End Function

Sub AppelFonc()
Dim Elem1 As Variant
Set Elem1 = montableau("Emement1", "Element2")(1)
MsgBox Elem1
End Sub
A voir également:

6 réponses

Et Merci !!!!
Si personne ne dit merci, ceux qui savent finiront par ne plus répondre !!!
41
il ya des erreurs dans ton code (en plus il lui manque de la lisibilité)
Voici comment il faut faire (je l'ai testé, il marche)

Function MonTableau(Param1 As String, Param2 As String) As Variant
MonTableau = Array(Param1, Param2)
End Function

Sub AppelFonc()
Dim Elem1 As Variant
Elem1 = MonTableau("Emement1", "Element2")
MsgBox Elem1(0) & " " & Elem1(1)
End Sub
41
Merci depuis le temps que je cherchais un code clair!
6
merci!!!
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pour être un peu plus propre niveau mémoire tu peux aussi passer le tableau par référence :

Function MonTableau(Param1 As String, Param2 As String, byRef tabl() as variant)
tabl(0) = param1
tabl(1) = param2
End Function

Sub AppelFonc()
Dim Elem(2) As Variant

MonTableau "Element1", "Element2", Elem

MsgBox Elem(0) & " " & Elem(1)

End Sub
1
' Une autre solution avec Split 
Public Sub Randomise() 
    Dim str As String, i As Integer 
    str = Test() 
    MsgBox (str) 
    Dim Tableau() As String 
    Tableau = Split(str, "#") 
    For i = 0 To 2 - 1 
       MsgBox (Tableau(i)) 
   Next i 
End Sub 

Public Function Test() As String 
    Dim s As String 
    s = "One" 
    s = s & "#Two" 
    Test = s 
End Function
0