Fonction VB renvoyant un tableau de variant

therese94340 Messages postés 1 Date d'inscription   Statut Membre -  
 alino-91 -
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. zebulon
     
    Et Merci !!!!
    Si personne ne dit merci, ceux qui savent finiront par ne plus répondre !!!
    41
  2. Chemchoum
     
    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
  3. schoem
     
    Merci depuis le temps que je cherchais un code clair!
    6
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. niko
     
    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
  6. alino-91
     
    ' 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