Etablir les statistiques pour des cours de bourse donnés

Bonjour à tous,

Je dois rendre un projet de VBA et je bloque pour faire un programme. J'ai 4 feuilles avec des cours de bourses journaliers (avec chacun 4 données : ouverture, clôture, max, min). Le souci est que je ne peux faire le programme en disant de faire moyenne, écart-type, skewness, kurtosis et nombre de données pour tel colonne puisque pour chaque feuille la colonne change de place. J'ai essayé faire pour le cour à l'ouverture (PX_OPEN), mais ça marche pas et je n'arrive pas à comprendre pourquoi...

Pourriez vous m'aider ? Voici le code :

'Calcul des statistiques

Sub Stat()

Dim i As Integer

For i = 0 To 3

Sheets(1).Cells.Find("PX_OPEN").Select 'je sais pas si c'est activate ou select

ActiveCell.EntireColumn.Select

Sheets(5).Cells(i * 4 + 3, 3) = WorksheetFunction.Average(ActiveColumn) 'la moyenne

Sheets(5).Cells(i * 4 + 3, 4) = WorksheetFunction.StDev(ActiveColumn) 'L'écart type

Sheets(5).Cells(i * 4 + 3, 5) = WorksheetFunction.Skew(ActiveColumn) 'la Skewness

Sheets(5).Cells(i * 4 + 3, 6) = WorksheetFunction.Kurt(ActiveColumn) 'le Kurtosis

Sheets(5).Cells(i * 4 + 3, 7) = ActiveColumn.Cells.Count 'nbe des taux de rentabilités

'Passe à la feuille suivante.

Next i

'Fin de la procédure.

End Sub

Bonjour Adrien,

tu as un classeur avec 4 feuilles de cours de bourses journaliers, et moi j'ai un énoncé sans aucun fichier !

bon, t'as d'jà mis ta sub Stat() ; même sans balises de code, faut avouer qu'c'est d'jà pas si mal !

... mais oh, comme c'est bizarre ! juste avant Next i tu as écrit le commentaire : 'Passe à la feuille suivante

on devrait donc s'attendre à voir Sheets(i) pas vrai ? et que voit-on, plus haut ? Sheets(1) ; ah oui, c'est sûr que comme ça, c'est la meilleure façon d'balayer les 4 feuilles du classeur ! alors faut pas s'étonner si ça marche que pour la 1ère feuille, hein ?

et surtout, le fait que tu utilises i dans tes calculs de numéros de lignes alors que tu avais prévu de l'utiliser pour ton choix de feuille n'est qu'un léger à-côté sans aucune importance ! c'est juste une broutille, une peccadille, quoi ! (mais c'est que mon humble avis)

bon, pour tes résultats, c'est clair qu'il sont tous sur la même feuille : Sheets(5) ; bien sûr, dans un 1er temps, on penserait à utiliser un bloc With Sheets(5) .. End With ... mais dans un 2ème temps, vu l'travail qui est fait, on s'rend compte qu'y'a une meilleure optimisation à faire, pas vrai ? bon allez, j'vais quand même pas tout te souffler : j'te laisse chercher un peu !

j'subodore quand même que ton instruction ActiveCell.EntireColumn.Select pourrait être évitée !

(et peut-être aussi le .Select de l'instruction située juste au-dessus)

dhany

Dany, merci pour ton aide et oui la prochaine fois je mettrais le fichier ce sera plus simple !

Au final, j'ai bien réussi à trouver la solution, je la met au cas où cela serait utile à d'autres.

Merci la communauté !!

For i = 1 To 4

Sheets(5).Cells(i + 1, 1) = Sheets(i).Name

Sheets(i).Activate

Cells.Find("PX_CLOSE").Select 'je trouve la colonne voulue et je la sélectionne

Set Selec = ActiveCell.EntireColumn

Sheets(5).Cells(i + 1, 2) = "PX_CLOSE"

Sheets(5).Cells(i + 1, 3) = WorksheetFunction.Average(Selec) 'la moyenne

Sheets(5).Cells(i + 1, 4) = WorksheetFunction.StDev(Selec) 'L'écart type

Sheets(5).Cells(i + 1, 5) = WorksheetFunction.Skew(Selec) 'la Skewness

Sheets(5).Cells(i + 1, 6) = WorksheetFunction.Kurt(Selec) 'le Kurtosis

Sheets(5).Cells(i + 1, 7) = Application.WorksheetFunction.CountA(Selec) - 1 'nb de données avec -1 pour enlever le titre

J'suis ravi d'avoir pu t'aider ! merci pour ton retour, et pour avoir passé le sujet en résolu !

dhany

Rechercher des sujets similaires à "etablir statistiques cours bourse donnes"