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

Résolu/Fermé
reda18 - 10 juil. 2014 à 11:37
 reda18 - 10 juil. 2014 à 12:32
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

A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 10/07/2014 à 11:57
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
10 juil. 2014 à 12:17
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
Je vous remercie infiniment !
si vous savez à quel point vous m'avez aidé.
Je vous souhaite tout le bonheur du Monde !
0