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]