XL 2010 fonction PREVISION sur une matrice

F22Raptor

XLDnaute Impliqué
Hello,
Je souhaite faire une interpolation linéaire, mais sur une matrice.
Quand c'est simplement sur une "ligne", j'utilise PREVISION.

Mais dans l'exemple joint, il faut chercher le résultat d'une matrice, qui se trouve environ au niveau de l'étoile dans le tableau.
On peut y arriver en faisant deux PREVISION successifs, un pour le vertical, et un pour l'horizontal. Mais pour mon tableau, c'est une galère (300 interpol à calculer … donc ferait 600 calculs … un peu lourd !)
Je cherche à savoir s'il existe l'equivalent de PREVISION, pour la matrice complète

Merci et bonne soirée à tous
 

Pièces jointes

  • interpol lin.xlsx
    11.9 KB · Affichages: 22

Dranreb

XLDnaute Barbatruc
Remarque :
Avec cette fonction personnalisée en VBA :
VB:
Option Explicit

Function Intpo2D#(ByVal X#, ByVal Y#, _
   ByVal X0#, ByVal Y0#, ByVal X1#, ByVal Y1#, _
   ByVal Vx0y0#, ByVal Vx1y0#, ByVal Vx0y1#, ByVal Vx1y1#)
X = (X - X0) / (X1 - X0)
Y = (Y - Y0) / (Y1 - Y0)
Intpo2D = Vx0y0 + X * (Vx1y0 - Vx0y0) + Y * (Vx0y1 - Vx0y0) + X * Y * (Vx0y0 - Vx1y0 - Vx0y1 + Vx1y1)
End Function
Cette formule renvoie le même résultat :
Code:
=Intpo2D(21;112;10;110;57;120;1,45;2,48;1,7;3)
 

Dranreb

XLDnaute Barbatruc
De plus en plus fort avec recherche des cellules impliquées :
VB:
Option Explicit

Function MapTab(ByVal X#, ByVal Y#, ByVal Rng As Range) As Double
Dim L&, C&
L = WorksheetFunction.Match(Y, Rng.Columns(1))
C = WorksheetFunction.Match(X, Rng.Rows(1))
MapTab = Intpo2D(X, Y, Rng(1, C).Value, Rng(L, 1).Value, Rng(1, C + 1).Value, Rng(L + 1, 1).Value, _
   Rng(L, C).Value, Rng(L, C + 1).Value, Rng(L + 1, C).Value, Rng(L + 1, C + 1).Value)
End Function
Function Intpo2D#(ByVal X#, ByVal Y#, _
   ByVal X0#, ByVal Y0#, ByVal X1#, ByVal Y1#, _
   ByVal Vx0y0#, ByVal Vx1y0#, ByVal Vx0y1#, ByVal Vx1y1#)
X = (X - X0) / (X1 - X0)
Y = (Y - Y0) / (Y1 - Y0)
Intpo2D = Vx0y0 + X * (Vx1y0 - Vx0y0) + Y * (Vx0y1 - Vx0y0) + X * Y * (Vx0y0 - Vx1y0 - Vx0y1 + Vx1y1)
End Function
En la cellule voulue :
Code:
=MapTab(21;112;$A$10:$C$13)
 

Discussions similaires

Statistiques des forums

Discussions
312 023
Messages
2 084 714
Membres
102 637
dernier inscrit
TOTO33000