Besoin d'aide , création de fonction excel (sur un vecteur)

  • Initiateur de la discussion Initiateur de la discussion Emile
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Emile

Guest
Bonjour
Je fais une étude sur dix actions du NASDAQ en se basant sur une approche historique .J'ai réussi a télécharger les data concernant ces actions durant les quatre dernières années sous format xls . Je dois calculer les retours et déterminer les covariances ,mais je suis bloqué , je trouve pas comment manipuler Excel .
(j'ai juste besoin d'une fonction qui prend en argument un vecteur de dimension n [S(i)] et retourne un vecteur [R(i)] , R(i)=(S(i)-S(i-1))/S(i)
Merci
 
Re : Besoin d'aide , création de fonction excel (sur un vecteur)

Bonjour Emile, bienvenue sur XLD,

Voyez le fichier joint et la fonction R dans Module1 (Alt+F11) :

Code:
Option Base 1

Function R(S As Variant) As Variant
Dim i&, t#()
S = Application.Transpose(S)
On Error Resume Next
i = UBound(S, 2)
On Error GoTo 0
If i Then S = Application.Transpose(S)
i = UBound(S)
ReDim t(i - 1)
For i = 2 To i
  t(i - 1) = (S(i) - S(i - 1)) / S(i)
Next
R = t
End Function
Cette fonction est utilisée dans la feuille de calcul avec les 2 types de "vecteurs".

Edit : salut STephane

A+
 

Pièces jointes

Dernière édition:
Re : Besoin d'aide , création de fonction excel (sur un vecteur)

Re,

Ceci est peut-être préférable quand le calcul crée une erreur (valeur zéro, texte...) :

Code:
Option Base 1

Function R(S As Variant) As Variant
Dim i&, t() As Variant
S = Application.Transpose(S)
On Error Resume Next
i = UBound(S, 2)
If i Then S = Application.Transpose(S)
i = UBound(S)
ReDim t(i - 1)
For i = 2 To i
  On Error Resume Next
  t(i - 1) = (S(i) - S(i - 1)) / S(i)
  If Err Then t(i - 1) = "n/a"
Next
R = t
End Function
Fichier (2).

A+
 

Pièces jointes

Re : Besoin d'aide , création de fonction excel (sur un vecteur)

Re,

On peut aussi utiliser cette fonction RS qui renvoie un scalaire et non plus un vecteur :

Code:
Option Base 1

Function RS(S As Variant, ordre&) As Variant
'renvoie un scalaire
S = Application.Transpose(S)
On Error Resume Next
RS = UBound(S, 2)
If RS Then S = Application.Transpose(S)
On Error Resume Next
RS = (S(ordre + 1) - S(ordre)) / S(ordre + 1)
If Err Then RS = "n/a"
End Function
Dans le fichier (3) joint le calcul est bien plus rapide car il n'y a plus de boucle...

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour