Le 20/01/2006 17:12, Laurent Godard a écrit :

Bonsoir Jean Baptiste


Pour me faire la main, je cherche à écrire une fonction test1 qui fait un produit scalaire. Je compte utiliser cette fonction de la façon suivante dans une cellule de classeur.
=test1(A1:B20;B1:B20)

En m'inspirant du document de Andrew (§6.15 trouver l'élément dupliqué) j'ai écrit ce code :

function test1 (x() as double, y() as double) as double


effectivement, le passage de deux tableaux semblent poser probleme (je n'avais jamis tester avant)

par contre
=TEST1(A1:B10)
avec
function test1 (x)

te donne une matrice x (tableau 2D)

mais ca ne marche que si les colonnes sont adjacentes

for i=LBound(x()) to UBound(x())-1


pourquoi -1
UBound n'est pas un nombre d'élements mais un borne superieur

Laurent

Bon en m'inspirant de http://disemia.com/software/openoffice/macro_arrays.html j'ai fait ça et ça a l'air de marcher :

function test1 (X as variant, y as variant)
   ' on verifie si on a bien des ARRAY
   if NOT IsArray( X ) then
       Err = 519
test1 = "#VALUE" else
       if NOT IsArray( Y ) then
           Err = 519
           test1 = "#VALUE"
       else
           Dim length as Integer
           length = UBound(X) - LBound(X)
' assign the first value to the starting value
           Dim result As Double
           result = X( LBound( X ), 1 ) *  Y( LBound( Y ), 1 )
' iterate through remaing values to get volume
           For i = 1 to length
result = result + X( LBound( X ) + i, 1 ) * Y( LBound( Y ) + i, 1 )
           Next i
' return the resulting volume test1 = result
       end if
   end if
End Function

Je vais pouvoir faire ma fonction d'interpolation ...

--
Jean-Baptiste FAURE
Cemagref - Unité de Recherche Hydrologie-Hydraulique
Tel: 04 72 20 87 76 - Fax: 04 78 47 78 75 - Web: www.lyon.cemagref.fr
Cemagref-Lyon 3bis, quai Chauveau C.P.220 69336 Lyon cedex09 FRANCE
<< Interpoler est difficile, extrapoler est téméraire >>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à