Fonction VB renvoyant un tableau de variant

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
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. Et Merci !!!!
    Si personne ne dit merci, ceux qui savent finiront par ne plus répondre !!!
    41
    1. 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
      1. Merci depuis le temps que je cherchais un code clair!
        6
        1. 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
          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