Bonsoir Guillaume,

Le 02.02.2009 14:26, Guillaume Durieux a écrit :
> Bonjour Jean Baptiste,
> 
> Je suis pas bien sur d'avoir tout compris de ce que tu m'a expliqué, mais si 
> tu
> penses que la macro que tu avais crée il y a quelque temps peut me servir et
> bien je suis preneur.

Voici le code de la macro :

function interpoler (X as variant, Y as variant, T as double)
   ' on verifie si on a bien des ARRAY
   if NOT (IsArray( X ) AND IsArray( Y )) then
      Err = 519
      interpoler = "#VALUE"     
   else
      Dim debut as integer, fin as integer, length as Integer
      Dim result As Double
      debut = LBound(X)
      fin = UBound(X)
      length = fin-debut
      Dim X1 as double, X2 as double, Y1 as double, Y2 as double
        
      'on suppose que X est trié par ordre croissant
      If (t < X(debut,1)) then  'avant on prend la première valeur
         interpoler = Y(debut,1)
         Exit function
      End if
      If (t >= X(fin,1)) then  'après on garde la dernière valeur
         interpoler = Y(fin,1)
         Exit function
      End if
      For i = 0 to length-1
         If (X(debut+i,1) <= t AND X(debut+i+1,1) > t) then
            X1 = X(debut+i,1)
            X2 = X(debut+i+1,1)
            Y1 = Y(debut+i,1)
            Y2 = Y(debut+i+1,1)
            Exit For
         End if
      Next
      'interpolation linéaire
      interpoler = y1 + (y2-y1)/(x2-x1)*(t-x1)
   end if
End Function

> 
> Petite question subsidiaire : si ça fonctionne avec une macro, est ce que la
> macro doit être copiée sur tous les ordinateurs susceptibles de faire tourner 
> le
> fichier calc ?

Oui et non : il faut enregistrer la macro dans le fichier Calc, pour
qu'il puisse l'utiliser. Et gérer la sécurité des macros (Outils >
Options > OOo > sécurité).
un exemple : http://www.cijoint.fr/cjlink.php?file=cj200902/cijHCNfuDt.ods

Bonne soirée
JBF
-- 
Seuls des formats ouverts peuvent assurer la pérennité de vos documents.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org

Répondre à