Interpolation linéaire à partir d'un tableau Excel

Bonjour à tous !

Voici mon problème:

Je possède un tableau avec 5 courbes et j'aimerais que, quand un utilisateur choisi une courbe et une valeur en x

un programme VBA puisse lui ressortir la valeur de son interpolation linéaire en fonction de cette courbe grâce aux deux valeurs (y1 et y2) que le programme aura sélectionné automatiquement!

ainsi que grace aux deux valeurs (x1 et x2 qui l'entoure)

est ce possible avec la formule de l'interpolation?

MERCI

ex:

mon utilisateur entre 65

et un xi de 7

dans le tableau cela sélectionnera automatiquement les valeurs

x1= 7

x2= 15

y1= 2.57

y2= 2.83

yi=y1+(y2-y1)*((xi-x1)/(x2-x1))

ce qui donnera

yi= 2.6025

920interpollation.xlsm (25.11 Ko)

????

pas possible à réaliser?

Bonjour,

dans ton programme ,xi prend la valeur 7 (après être passé dans la 2ème boucle for each cell) et non la valeur 8 comme tu sembles t'y attendre. et donc le résultat est bien correct sur base d'une valeur xi=7.

essaie ceci, si j'ai bien compris ce que tu essayais de faire

Sub inter()

Dim cell As Range
Dim a
Dim x1, x2, y1, y2
Dim xi#, yi#

Sheets("Feuil1").Select
a = Range("C3")
xi = Range("C4")

For Each cell In Sheets("Feuil2").Range("B1:F1")
    If (cell.Value) = a Then
        a = cell.Column - 1 'on détermine la colonne qui correspond à la t° demandée
        rep1 = cell.Offset(4, 0)
        Exit For
    End If
Next

For Each cell In Sheets("Feuil2").Range("A2:A7")
    If (cell.Value) < xi Then
        x1 = cell.Offset(0, 1)  'on prend la valeur x juste inférieure à la valeur recherchée 
        y1 = cell.Offset(0, a) ' on prend la valeur y associée

        ElseIf (cell.Value) > xi Then
        x2 = cell.Offset(0, 1) ' on prend la valeur x juste supérieure à la valeur recherchée
        y2 = cell.Offset(0, a) 'on prend la valeur y associée
        Exit For
    End If
Next

yi = y1 + (y2 - y1) * ((xi - x1) / (x2 - x1))       'marche

Sheets("Feuil1").Select
Range("G9") = x1
Range("G10") = x2
Range("G11") = y1
Range("G12") = y2
Range("C7") = yi

End Sub

simple et efficace !

merci beaucoup c'est juste parfait ^^

Rechercher des sujets similaires à "interpolation lineaire partir tableau"