Passer un tableau de deux dimensions en paramètre d'une function

Résolu
reda18 -  
 reda18 -
Bonjour,

s'il vous plait j'ai un problème lorsque j'essaye de coder une fonction qui prend un tableau à deux dimensions en paramètre ... lorsque j'essaye quelque chose genre :
Function mafonction(montableau (,) as double )

ca me donne une erreur de compilation comme quoi le ')' est attendu après le ')' au lieu de ','

et je suis bloqué là dans mon projet parce que tout est basé sur ca

Merci

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    Bonjour,

    Regarde cet exemple bricolé rapidement :
    Sub test()
    Dim Tb_in(3, 2) As Double, Tb_Out As Variant
    Dim i&, j&
    'remplissage tableau initial
    For i = 1 To 3
        For j = 1 To 2
            Tb_in(i, j) = 1
        Next j
    Next i
    'envoi à la fonction le tableau en paramètre
    Tb_Out = MaFonction(Tb_in) 'retour du tableau dans un variant
    'visualisation résultat :
    MsgBox "la valeur : " & Tb_in(3, 2) & " est devenue : " & Tb_Out(3, 2)
    End Sub
    
    Function MaFonction(Tbl() As Double) As Variant
    Dim i&, j&, Tb_Interm(3, 2) As Double
    For i = LBound(Tbl, 1) To UBound(Tbl, 1)
        For j = LBound(Tbl, 2) To UBound(Tbl, 2)
            'ici on ne fait que multiplier par 2 les valeurs du tableau passé en paramètre
            Tb_Interm(i, j) = Tbl(i, j) * 2
        Next j
    Next i
    MaFonction = Tb_Interm
    End Function


    Cordialement,
    Franck
    1
    1. reda18
       
      Si j'ai bien compris c'est qu'on ne spécifie pas ?
      c'est un peu ambigu.
      Par exemple si je veux faire une fonction qui calcule le produit scalaire de deux vecteurs stockés dans une table de deux dimension.
      Ça serai quoi la première ligne si on veut parler en suite de mon_tableau(i,j) ?
      Genre pour que ça signifie pas un tableau à une dimension.
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Oui. On ne précise pas le dimensionnement du tableau.
      Non ce n'est pas ambigue... Dans mon exemple tu sais que tu va utiliser un tableau à deux dimensions. Mais cela peut être entièrement automatique en précisant les dimensions souhaitées en paramètre également...

      La première ligne serait rigoureusement la même que la mienne. Je fait une multiplication, toi un produit scalaire....
      Genre pour que ça signifie pas un tableau à une dimension.
      On s'en fiche! C'est toi qui envoie le tableau à la fonction. Là tu lui envoie ce que tu veux...

      Si tu veux que ta fonction ne fonctionne qu'avec un tableau à deux dimensions et, si tu lui envoie une seule dimension qu'elle te renvoie un message d'erreur, utilise le traitement d'erreur...
      0
    3. reda18
       
      Je vous remercie infiniment !
      si vous savez à quel point vous m'avez aidé.
      Je vous souhaite tout le bonheur du Monde !
      0