Tentative de calcul de stats

Bonjour a tous ,

Je débute avec VBA et j'essaie de faire des statistiques de base.

Voila j'ai plusieurs feuilles de calcul dont la dernière feuille s'appel "statistiques".

J'ai des feuilles dont les données commencent en B2 et d'autre feuilles ou ca commence en B3 ...Je voudrait faire mes calculs sur ces données et afficher le tout dans la feuille "statistiques ".

Je veux donc faire une boucle qui passe de feuille en feuille (hors celle statistiques car pas de données dessus et vu que c'est la ou je veux afficher il faut que je l'exclut)

Le problème c'est que je n'arrive pas a définir ma "référence" de données pour calculer le tout en une seule procédure vu que certain commencent en B2 d'autre en B3 ... jsuqu'a x ( j'aimerai utilise le xldown et non un chiffre comme j'ai fait dans mon code)

Voici le code que j'ai écrit pour le moment , il fonctionne moyennement c'est a dire il m'affiche la feuille statistiques alors que je pensais l'avoir exclut et bug donc dessus pour les calculs et ensuite le code fonctionne pour les feuilles dont les données débutent en B3 et il y'a donc une légère erreur de calcul pour ceux qui débutent en B2 ...

Sub stat_elementaire()

Dim SH As Worksheet

Dim i As Integer

i = 1

For Each SH In ThisWorkbook.Worksheets

If SH.Name <> "STATISTIQUES " Then

SH.Activate

i = i + 1

If SH.Name = "statistiques" Then GoTo etiquette

End If

With Sheets("Statistiques")

.Cells(i, 1).Value = SH.Name

.Cells(i, 2).Value = Range("B1:B2147").Cells.Count

.Cells(i, 3).Value = WorksheetFunction.Average(Range("B3:B2147"))

.Cells(i, 4).Value = WorksheetFunction.StDev(Range("B3:B2147"))

.Cells(i, 5).Value = WorksheetFunction.Skew(Range("B3:B2147"))

.Cells(i, 6).Value = WorksheetFunction.Kurt(Range("B3:B2147"))

End With

Next SH

etiquette:

End Sub

merci a tous pour votre aide et de m'aide a comprendre la logique de tous ces codes !

Bonjour et bienvenue,

Merci de joindre un petit fichier à ta demande que l'on voit la structure de tes données.

Cdlt.

Bonsoir,

voici un premier jet, tu ne nous dis pas comment distinguer une feuille dont les données commencent à la ligne 2 d'une feuille dont les données commencent à la ligne 3. le code ci-dessous n'est donc prévu que pour prendre les données qu'à partir de la ligne 3

Sub stat_elementaire()
    Dim SH As Worksheet
    Dim i As Integer
    fr = 3 ' première ligne
    With Sheets("Statistiques")
        i = 1
        For Each SH In ThisWorkbook.Worksheets
            If SH.Name <> .Name Then
                i = i + 1
                dl = ws.Cells(Rows.Count, "B").End(xlUp).Row
                .Cells(i, 1).Value = SH.Name
                .Cells(i, 2).Value = dl - fr + 1
                Set plage = SH.Range("B" & fr & ":B" & dl)
                .Cells(i, 3).Value = WorksheetFunction.Average(plage)
                .Cells(i, 4).Value = WorksheetFunction.StDev(plage)
                .Cells(i, 5).Value = WorksheetFunction.Skew(plage)
                .Cells(i, 6).Value = WorksheetFunction.Kurt(plage)
            End If
        Next SH
    End With
End Sub

Bonjour et bienvenue,

Merci de joindre un petit fichier à ta demande que l'on voit la structure de tes données.

Cdlt.

oui pardon excusez-moi j'ai oublie de le faire

Merci h2so4

Oui en effet j'ai bien compris qu'il y avait une faille dans mon raisonnement !! Je me demande est-il possible de faire une boucle qui pour toutes les feuilles prendrait en compte dans les colonnes B que les valeurs numériques ?

En effet si je n'avait pas ce problème de décalage dans les colonnes de B de chaque feuille cela serait plus simple !!!! Je suis déja contente de voir que le reste de mon code n'est pas si mauvais si on exclut ce problème de logique ! Ahaha ! En tout cas merci je vais y réfléchir !

Bonjour,

2 propositions à étudier.

Cdlt.

Bonjour,

2 propositions à étudier.

Cdlt.

Statistiques en colonnes .xlsm

Statistiques en lignes .xlsm

Merci beaucoup Jean-Eric ! j'imagine que cela vous a pris beaucoup moins de temps a comprendre que moi ! Bonne journée et merci pour votre aide ! Je vais m'inspirer de votre code pour comprendre la mécanique (enfin la logique !) de tout cela ! J'arrive à l'expliquer de manière littéraire mais l'écrire ce n'est pas encore cela ! cela viendra je l'espère !

Re,

Dans l'éditeur VBE, fias un double clic sur SpecialCells et fais F1.

Tu devrais mieux comprendre la chose.

Set rng = ws.Cells(2).Resize(N).SpecialCells(2, 1)

@Jean-Eric merci de l'astuce !

Rechercher des sujets similaires à "tentative calcul stats"