BioTop
XLDnaute Nouveau
Bonjour,
Si j'utilise depuis longtemps Excell, je en me suis jamais réellement lancé dans le VBA, sauf pour modifier quelques macros...
depuis quelques jours je travaille sur la recherche de tendances . pour cela je dois essayer plusieurs jeux de données de contrôles ( jeux de valeurs pour l'axe des X).
Excel propose des graphes de points avec des courbes de tendances ( linéaires, exponentielles, logarithmiques,etc...). on peut toujours faire un copier coller de la formule de la courbe de tendance qui apparait sur le graphique, mais c'est fastidieux.
je me suis donc penché sur le problème, pour calculer les coefficients des courbes et afficher le coefficient de détermination pour les 4 principaux types d'extrapolation.
Mais ça reste fastidieux d'essayer chaque jeux de données...
Voici donc l'objet de mon post:
De même qu'il existe une fonction TENDANCE(valeurs des Y, Valeurs des X, nouveau X) pour l'extrapolation linéaire, je voudrais créer 3 autres fonctions pour les extrapolation exponentielles, Logarithmiques et puissances:
Voici un appel de la fonction TENDANCE :
=TENDANCE( I6:L6; W6:Z6; AC6; VRAI) qui permet de calculer le point d’abscisse AC6 ...
et voici ce que je voudrai faire :
Public Function TENDANCES (TypTend as ENTIER; Valx() As Variant, Valy() As Variant, Newx As Variant) As Variant
switch(typtend)
Public Function TENDANCE_EXP (ValY() As Variant, ValX() As Variant, NewX As Variant) As Variant
Public Function TENDANCE_LOG (ValY() As Variant, ValX() As Variant, NewX As Variant) As Variant
Public Function TENDANCE_POW (ValY() As Variant, ValX() As Variant, NewX As Variant) As Variant
Merci pour votre aide , en attendant je continue à chercher ....
Jean-luc
Si j'utilise depuis longtemps Excell, je en me suis jamais réellement lancé dans le VBA, sauf pour modifier quelques macros...
depuis quelques jours je travaille sur la recherche de tendances . pour cela je dois essayer plusieurs jeux de données de contrôles ( jeux de valeurs pour l'axe des X).
Excel propose des graphes de points avec des courbes de tendances ( linéaires, exponentielles, logarithmiques,etc...). on peut toujours faire un copier coller de la formule de la courbe de tendance qui apparait sur le graphique, mais c'est fastidieux.
je me suis donc penché sur le problème, pour calculer les coefficients des courbes et afficher le coefficient de détermination pour les 4 principaux types d'extrapolation.
Mais ça reste fastidieux d'essayer chaque jeux de données...
Voici donc l'objet de mon post:
De même qu'il existe une fonction TENDANCE(valeurs des Y, Valeurs des X, nouveau X) pour l'extrapolation linéaire, je voudrais créer 3 autres fonctions pour les extrapolation exponentielles, Logarithmiques et puissances:
- TENDANCE_EXP(valeurs des Y, Valeurs des X, nouvel X)
- TENDANCE_LOG (valeurs des Y, Valeurs des X, nouvel X)
- TENDANCE_POW(valeurs des Y, Valeurs des X, nouvel X)
Voici un appel de la fonction TENDANCE :
=TENDANCE( I6:L6; W6:Z6; AC6; VRAI) qui permet de calculer le point d’abscisse AC6 ...
et voici ce que je voudrai faire :
Public Function TENDANCES (TypTend as ENTIER; Valx() As Variant, Valy() As Variant, Newx As Variant) As Variant
switch(typtend)
case 0 : 'Extrapolation Linéaire
End FunctionTENDANCES= TENDANCE( Valy, Valx, Newx, VRAI)
case 1 : 'Extrapolation ExponentielleTENDANCES= TENDANCE_EXP( Valy, Valx, Newx)
case 0 : 'Extrapolation LogarithmiqueTENDANCES= TENDANCE_LOG( Valy, Valx, Newx)
case 1 : 'Extrapolation PuissanceTENDANCES= TENDANCE_POW( Valy, Valx, Newx)
End SwitchPublic Function TENDANCE_EXP (ValY() As Variant, ValX() As Variant, NewX As Variant) As Variant
A =EXP( INDEX( DROITEREG( LN( ValY) ; (ValX)); 2))
B= DROITEREG( LN( ValY);(ValX))
TENDANCE_EXP = A*EXP( B*NewX)
End FunctionB= DROITEREG( LN( ValY);(ValX))
TENDANCE_EXP = A*EXP( B*NewX)
Public Function TENDANCE_LOG (ValY() As Variant, ValX() As Variant, NewX As Variant) As Variant
B = INDEX( DROITEREG( ( ValY) ; LN( ValX)); 2)
A = DROITEREG( ( ValY);LN( ValX))
TENDANCE_EXP = A*LOG( NewX) + B
End FunctionA = DROITEREG( ( ValY);LN( ValX))
TENDANCE_EXP = A*LOG( NewX) + B
Public Function TENDANCE_POW (ValY() As Variant, ValX() As Variant, NewX As Variant) As Variant
A =EXP( INDEX( DROITEREG( LN ( ValY) ; LN( ValX)); 2))
B= DROITEREG( LN( ValY);LN( ValX))
TENDANCE_EXP = A* NewX^ B
End FunctionB= DROITEREG( LN( ValY);LN( ValX))
TENDANCE_EXP = A* NewX^ B
Merci pour votre aide , en attendant je continue à chercher ....
Jean-luc