Cellule calcul nuage de points + liste déroulante

cdiemcarpe4

XLDnaute Nouveau
Bonsoir à tous ,


Je souhaiterais réaliser un tableau excel dont une cellule est calculée automatiquement grâce à une courbe nuage de points (une seule courbe).

Je vais essayer d'être le plus précis possible, en prenant l'exemple d'une chute d'eau.
Un fabricant de douche nous donne une courbe l'axe des Y représente le coeff de la force G exercée par rapport à l'axe des X qui représente le débit d'eau .
Le fabricant de douche nous donne également une valeur typique de la force G exercée pour 1litre d'eau c'est donc cette valeur référence que nous rentrons dans notre cellule.
Comment fait-on pour que cette cellule calcule automatiquement la force G par rapport à la courbe en nuage de points ?

Si ce n'est pas clair je peux vous envoyer un tableau Excel, merci pour votre aide, en espérant ne pas prendre de douche froide..
 

cdiemcarpe4

XLDnaute Nouveau
Re : Cellule calcul nuage de points + liste déroulante

Capture d’écran 2015-09-24 à 20.49.58.jpg

Voilà un exemple à quoi ressemblera la courbe en nuage de points sur Excel donc par exemple si pour 700litres la force G est de 3G (soit 100% sur la courbe la valeur référence), la force G pour 1000 litres d'eau sera d'environ 140% de 3 soit (3X1,4) = 4,2.
 

Dranreb

XLDnaute Barbatruc
Re : Cellule calcul nuage de points + liste déroulante

Bonsoir.

Essayez cette fonction perso :
VB:
Function IntpoMiL(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double, XPrcYMil) As Double
IntpoMiL = Y1 + (Y2 - Y1) * F0à1xMiLog((X - X1) / (X2 - X1), XPrcYMil)
End Function
Function F0à1xMiLog(ByVal X As Double, ByVal XMich As Double) As Double
Dim B As Double
If Abs(XMich - 0.5) > 2.3283064365387E-10 Then
   B = (1 / XMich - 2) / XMich
   F0à1xMiLog = Log(B * X + 1) / Log(B + 1)
Else
   F0à1xMiLog = X: End If
End Function
Calcule une valeur Y pour un X donné en partant d'une valeur X1 et de la valeur Y1 correspondante, d'une valeur X2 et de la valeur Y2 correspondante, et d'une fraction du parcourt de X1 à X2 où Y est exactement à mi-chemin entre Y1 et Y2.

Je vous donne aussi à tout hasard la fonction inverse :
VB:
Function IntpoMiE(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double, YPrcXMil) As Double
IntpoMiE = Y1 + (Y2 - Y1) * F0à1yMiExp((X - X1) / (X2 - X1), YPrcXMil)
End Function
Function F0à1yMiExp(ByVal X As Double, ByVal YMich As Double) As Double
Dim B As Double
If Abs(YMich - 0.5) > 2.3283064365387E-10 Then
   B = (1 / YMich - 2) / YMich
   F0à1yMiExp = ((B + 1) ^ X - 1) / B
Else
   F0à1yMiExp = X: End If
End Function
Le dernier paramètre doit être le même, mais représente cette fois la fraction du parcourt de Y1 à Y2 qui doit être respectée quand X est à mi-chemin entre X1 et X2.

Mais si le changement de courbure est toujours aussi peu marqué vous pouvez peut être vous contenter de cette autre fonction :
VB:
Function IntpoHyp(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double, _
                                     ByVal X3 As Double, ByVal Y3 As Double) As Double
Dim dX As Double, dY As Double: dX = X3 - X1: dY = Y3 - Y1: If dY = 0 Then IntpoHyp = Y1: Exit Function
IntpoHyp = Y1 + dY * F0à1xyInt((X - X1) / dX, (X2 - X1) / dX, (Y2 - Y1) / dY)
End Function
Function F0à1xyInt(ByVal X As Double, ByVal XInt As Double, ByVal YInt As Double) As Double
Dim Dét As Double, A As Double, B As Double
Dét = XInt - YInt
If Abs(Dét) > 2.3283064365387E-10 Then
   A = XInt * (YInt - 1) / Dét
   B = YInt * (XInt - 1) / Dét
   If X <> -A Then F0à1xyInt = B - (A * B) / (X + A)
Else
   F0à1xyInt = X: End If
End Function
Vous donnez les coordonnées de 3 points de la courbe pour calculer un Y correspondant à un autre X.
Cette fonction est sa propre inverse: il suffit d'intervertir les 3 Xn et Yn
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Cellule calcul nuage de points + liste déroulante

L'allure de la courbe montrée n'est pas monotone. Quelle en est la formule ?
Et qu'aimeriez vous pouvoir calculer ? Une valeur d'ordonnée correspondant à une valeur d'abscisse ?
 
Dernière édition:

cdiemcarpe4

XLDnaute Nouveau
Re : Cellule calcul nuage de points + liste déroulante

Bonjour Dranreb ,

Merci énormément pour votre précieuse aide, je souhaitais effectivement calculer une valeur d'ordonnée par rapport à une valeur d'abscisse

La valeur d'ordonnée me donne un coeff multiplicateur que je multiplie à la valeur référence pour obtenir le résultat que je souhaite.

Encore une fois mille merci
 

Dranreb

XLDnaute Barbatruc
Re : Cellule calcul nuage de points + liste déroulante

J'ai aussi trouvé un jour un autre calcul possible, mais qui n'est pas celui utilisé par Excel pour le lissage d'une courbe, et qui obligerait de plus à spécifier en face de chaque point un paramètre arbitraire de 'vitesse de changement de direction'. Il aurait en revanche l'avantage de ne pas présenter, aux points donnés, de rupture de continuité de la seconde dérivée, ni jamais d'aucune autre, et conserverait très loin des points la tendance en droites des extrémités. Ce n'est pas non plus le chaotique polynôme passant exactement par tous les points. Mais à tous ces expédients, rien ne vaut la véritable loi du phénomène représenté, quand il est possible de la reconnaitre par un examen attentif des variations, à défaut de la connaître.
 

Discussions similaires

Réponses
13
Affichages
1 K

Statistiques des forums

Discussions
312 503
Messages
2 089 062
Membres
104 014
dernier inscrit
Aurélie MONTEIL