Statistiques

Bonjour à tous

Voici un travail géo sur lequel je travail actuellement. La base de données est vouée à s'agrandir il ne s'agit que d'un échantillon très très maigre et j'aimerai automatisé tout cela. J'ai écrit une macro mais je ne comprend pas pourquoi elle bloque.

Merci de m'éclairer , cela doit être tout simple !

Sub stats()

Dim sh As Worksheet

Dim rng As Range

Dim i As Integer

With Sheets("STATISTIQUES")

.Range("I1") = "Nombre de données"

.Range("J1") = "Moyenne"

.Range("K1") = "Volatilité"

.Range("L1") = "Skewness"

.Range("M1") = "Kurtosis"

.Range("N") = "Mediane"

.Range("O") = "Max"

.Range("P") = "Min"

End With

For Each sh In ActiveWorkbook.Worksheets

If sh.Name <> "STATISTIQUES" Then

sh.Activate

Range("I3").Select

Set rng = Range(Selection, Selection.End(xlDown)).Offset(0, 1)

For i = 2 To 5

With Sheets("STATISTIQUES")

.Cells(i, 8).Value = sh.Name

.Cells(i, 9).Value = rng.Rows.Count

.Cells(i, 10).Value = WorksheetFunction.Average(rng)

.Cells(i, 11).Value = WorksheetFunction.StDev(rng)

.Cells(i, 12).Value = WorksheetFunction.Skew(rng)

.Cells(i, 13).Value = WorksheetFunction.Kurt(rng)

.Cells(i, 14).Value = WorksheetFunction.Median(rng)

.Cells(i, 15).Value = WorksheetFunction.Max(rng)

.Cells(i, 16).Calue = WorksheetFunction.Min(rng)

End With

Next i

End If

Next sh

End Sub

Bonjour,

Corriges les fautes de frappe comme par exemple :

.Cells(i, 16).Calue = WorksheetFunction.Min(rng)

c'est Value et non Calue

ou encore préciser le numéro de ligne pour ces adresses :

.Range("N") = "Mediane"
.Range("O") = "Max"
.Range("P") = "Min"

qui devrait être :

.Range("N1") = "Mediane"
.Range("O1") = "Max"
.Range("P1") = "Min"

en effet je n'avais même pas remarqué cela , merci ! Mon seul problème c'est que le code fonctionne mais que sur une seule feuille , pourtant j'ai essayé d'inclure une boucle pour passer de feuille en feuille...

je joint le fichier corrigé

j'étais tellement préoccupé par le fait que ca ne fonctionne que j'en ai oublié la base , vraiment désolé pour cette erreur.

Je rectifie ma question par conséquent : je ne comprend pas ce qui dans mon code empêche la boucle de passer de feuille en feuille de fonctionner : dans statistiques j'obtient en 4 fois ( et non 3 comme le nombre de feuilles étudiées) la même chose de la même feuille (la 3 ). Je pensais pourtant que ma boucle avec les worksheets allait fonctionner non ?

Merci et encore désolé pour ne pas avoir fait attention au préalable sur ces fautes de frappe

Bonjour,

Tu n'as pas re-posté ton fichier mais essais ceci :

Sub stats()

    Dim sh As Worksheet
    Dim rng As Range
    Dim i As Integer

    With Sheets("STATISTIQUES")

        .Range("I1") = "Nombre de données"
        .Range("J1") = "Moyenne"
        .Range("K1") = "Volatilité"
        .Range("L1") = "Skewness"
        .Range("M1") = "Kurtosis"
        .Range("N1") = "Mediane"
        .Range("O1") = "Max"
        .Range("P1") = "Min"

    End With

    i = 1
    For Each sh In ActiveWorkbook.Worksheets

        If sh.Name <> "STATISTIQUES" Then

            Set rng = sh.Range(sh.Cells(3, 9), sh.Cells(3, 9).End(xlDown))

            i = i + 1

            With Sheets("STATISTIQUES")

                .Cells(i, 8).Value = sh.Name
                .Cells(i, 9).Value = rng.Rows.Count
                .Cells(i, 10).Value = WorksheetFunction.Average(rng)
                .Cells(i, 11).Value = WorksheetFunction.StDev(rng)
                .Cells(i, 12).Value = WorksheetFunction.Skew(rng)
                .Cells(i, 13).Value = WorksheetFunction.Kurt(rng)
                .Cells(i, 14).Value = WorksheetFunction.Median(rng)
                .Cells(i, 15).Value = WorksheetFunction.Max(rng)
                .Cells(i, 16).Value = WorksheetFunction.Min(rng)

            End With

        End If

    Next sh

End Sub

Il ne te faut pas faire de boucle interne ("For i = 2 To 5" c'est ce qui écrase tes données précédentes) mais incrémenter la variable !

Merci !

j'avais fini par trouve une solution en reprenant le code , ma solution est plus complexe et longue mais elle fonctionne !

Merci de m'avoir aidé en tout cas et de m'avoir expliquer ( je ne connaissait pas ces histoires de données précédentes écrasées en outre , je vais désormais me renseigner sur l'incrémentation pour ne plus avoir de tel soucis ! ) . Bonne journée !

Rechercher des sujets similaires à "statistiques"