Pas bonjour non plus.
Si tu dois simplement extrapoler une valeur entre deux bornes en considérant qu'il s'agit d'une droite entre ces deux bornes, il te suffit de faire une règle de trois :
J'avais créé cette fonction pour calculer une date, mais tu sauras la simplifier.
Dans mon cas, les valeurs à calculer se trouvent dans les cellules à droite de mes bornes, exemple : Je cherche à quelle date (colonne B) extrapolée lorsque la valeur de la colonne A vaut 408
Colonne_A Colonne_B
400 24/03/2013 10:30
405 24/03/2013 10:40
415 24/03/2013 10:50
428 24/03/2013 11:00
En supposant que :
Range1 soit la valeur de la borne 1 (colonne A, 2ème ligne)
Range2 soit la valeur de la borne 2 (colonne A, 3ème ligne)
TargetValue soit la valeur cible (408)
Private Function RangeExtrapolation(ByRef Range1 As Range, _
ByRef Range2 As Range, _
ByRef TargetValue As Single) As String
Dim gGain As Double
Dim gBias As Double
RangeExtrapolation = "" ' par défaut
' Calcule la pente entre ces deux points
gGain = (Range1.Value2 - Range2.Value2) / _
(Range1.Offset(0, 1).Value - Range2.Offset(0, 1).Value)
' Calcule le décalage
gBias = Range1.Value2 - (gGain * Range1.Offset(0, 1).Value)
' Applique la formule pour retrouver la date équivalente à la valeur cible
RangeExtrapolation = CDate((gGain * TargetValue) + gBias)
End Function
Tu n'as plus qu'à faire une boucle pour cibler quelles cellules utiliser (boucle avec test > ou <) et les fournir à la fonction.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)