Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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)
 

F22Raptor

XLDnaute Impliqué
Hello Dran,
Ton fichier avec PRODUITMAT donne bien la même réponse que si je fais mes deux interpols successives.
Mais je note la fonction VBA : je vais creuser ça demain !
Merci et bonne soirée
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…