XL 2013 interpollation linéaire excel

JO93

XLDnaute Nouveau
bonjour, je souhaite faire une interpolation linéaire des données du tableau ci dessous, j'ai essayer "prévision" mais il ne renvoi que des valeurs déjà présente dans le tableau, j'ai essayer "index " "equiv" ils fonctionnent pas bien non plus car me renvoient tant de bon que de mauvais résultats......
 

Pièces jointes

  • Classeur1.xlsx
    10.6 KB · Affichages: 18

mécano41

XLDnaute Accro
Bonjour,

Juste un essai, avec une petite gymnastique pour séparer le plateau et calculer une fonction polynomiale.

Ce calcul est identique à celui d'Excel pour cette courbe de tendance (voir deuxième série de graphiques où le plateau est supprimé). Simplement, on remet le plateau en fonction des données de base (reste à voir si cela conviendra dans d'autres cas ; il faut être très méfiant avec les courbes de tendance...)

Pour avoir une valeur intermédaire, il suffit d'utiliser la formule correspondante pour une valeur donnée de température.

Cordialement
 

Pièces jointes

  • Courbes tendance2.xlsx
    25.6 KB · Affichages: 8

job75

XLDnaute Barbatruc
Bonjour JO93, vgendron, mécano41,

Le plus simple est d'interpoler entre les 2 points les plus proches, voyez cette fonction VBA :
VB:
Function Interpolation(v, plage1 As Range, plage2 As Range)
Dim i&
For i = 1 To plage1.Count - 1
    If v >= plage1(i) And v <= plage1(i + 1) Or v <= plage1(i) And v >= plage1(i + 1) Then
        If plage1(i + 1) = plage1(i) Then Exit For
        Interpolation = plage2(i) + (plage2(i + 1) - plage2(i)) * (v - plage1(i)) / (plage1(i + 1) - plage1(i))
        Exit Function
    End If
Next
Interpolation = "n/a"
End Function
Fichier joint avec les formules en I3 et en I6.

A+
 

Pièces jointes

  • Interpolation(1).xlsm
    23.7 KB · Affichages: 21

JO93

XLDnaute Nouveau
Bonjour JO93, vgendron, mécano41,

Le plus simple est d'interpoler entre les 2 points les plus proches, voyez cette fonction VBA :
VB:
Function Interpolation(v, plage1 As Range, plage2 As Range)
Dim i&
For i = 1 To plage1.Count - 1
    If v >= plage1(i) And v <= plage1(i + 1) Or v <= plage1(i) And v >= plage1(i + 1) Then
        If plage1(i + 1) = plage1(i) Then Exit For
        Interpolation = plage2(i) + (plage2(i + 1) - plage2(i)) * (v - plage1(i)) / (plage1(i + 1) - plage1(i))
        Exit Function
    End If
Next
Interpolation = "n/a"
End Function
Fichier joint avec les formules en I3 et en I6.

A+

Bonjour Job75, merci, ça marche super Bien!
Merci a Tous pour votre aide.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 946
Membres
103 989
dernier inscrit
jralonso