Calcul de moyennes

Bonjour à tous.

N'ayant pour l'instant pas trouvé de solution à mon problème, je me permets de faire appel à vous.

J'aimerai faire un petit programme permettant de me calculer automatiquement la moyenne de mes 5 premières valeurs [1;5], puis des 5 suivantes [6;10] etc.... pour mes 44766 valeurs que contient mon tableau.

J'aimerai que ces valeurs moyennes soient collées successivement les unes à la suite des autres.

Si besoin, je peux charger mon fichier.

En vous remerciant

Bonjour Lee, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée Dl de la colonne A de l'onget O
J = 1 'intialise la variable J
For I = 1 To DL Step 5 'boucle sur toutes les ligne de 1 à DL par pas de 5
    'renvoie dans la cellule ligne J colonne B la moyenne des cinq première valeurs à artir de la ligne I de la colonne A, incrémente J
    Cells(J, "B").Value = Application.WorksheetFunction.Average(Cells(I, "A").Resize(5, 1)): J = J + 1
Next I 'prochaine ligne (par pas de 5) de la boucle
End Sub

Bonjour Thauthème, et merci pour ta réponse !

Je pense avoir besoin de petites précisions...

Qu'apelles-tu "O" pour Onglet ?

Les moyennes sont tirées des valeurs de ma colonne C. La première valeur est situé en C3.

Je souhaiterai les coller dans la colonne D.

J'ai tenté et tente toujours de modifier le code mais sans succès pour l'instant.

Merci d'avance

Re,

Heu franchement, avec le code commenté comme il l'est, t'es un peu bègue des mains (comme on dit à Sète)...

O c'est le nom de l'onglet dans lequel se trouvent les données. Tu remarqueras, j'ai écrit :

Set O = Worksheets("Feuil1") 'à adapter à ton cas

c'est le : à adapter à ton cas qui me semblait explicite... Si l'onglet des données se nomme : dugland tu remplaces la ligne :

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)

par :

Set O = Worksheets("dugland") 'définit l'onglet O (à adapter à ton cas)

Le code complet adapté :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "D").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne D de l'onglet O
J = 1 'intialise la variable J
For I = 3 To DL Step 5 'boucle sur toutes les ligne de 3 à DL par pas de 5
    'renvoie dans la cellule ligne J colonne B la moyenne des cinq première valeurs à artir de la ligne I de la colonne A, incrémente J
    Cells(J, "D").Value = Application.WorksheetFunction.Average(Cells(I, "D").Resize(5, 1)): J = J + 1
Next I 'prochaine ligne (par pas de 5) de la boucle
End Sub

Merci pour ta réponse, mais malheuresement ça ne fonctionne pas..

Le message d'erreur "400" apparaît.

Les moyennes sont calculées à partir des valeurs de la colonne C "Puissance (MW) toutes les 10 minutes" pour être collées dans la colonne D, vierge quant à elle.

Je te joins mon fichier en copie.

Léo

Re,

Les valeurs différentes de zéro étaient considérées comme du texte et aussi mon code précédent était erroné. Essaie comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)

Set O = Worksheets("Excel-pratique Test") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "C").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne C de l'onglet O
TV = O.Range("C1:C" & DL) 'définit le tableau des valeurs TV
For I = 1 To DL 'boucle sur toutes les ligne I de TV de 1 à DL
    If InStr(1, TV(I, 1), ".", vbTextCompare) > 0 Then 'condition : si TV(I,1) contient un point (.)
        TV(I, 1) = CDbl(Replace(TV(I, 1), ".", ",", , , vbTextCompare)) 'la virgule remplace le point et TV(I, 1) se transforme au format Double
    Else 'sinon (si TV(I,1) ne contient pas de point (.))
        TV(I, 1) = TV(I, 1) 'TV(I, 1) reste inchangé
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
O.Range("C1").Resize(DL, 1).Value = TV 'renvoie  le tableau TV dans la cellule C1 redimensionnée

J = 3 'intialise la variable J
For I = 3 To DL Step 5 'boucle sur toutes les ligne de 3 à DL par pas de 5
    'renvoie dans la cellule ligne J colonne D la moyenne des cinq première valeurs à partir de la ligne I de la colonne C, incrémente J
    O.Cells(J, "D").Value = Application.WorksheetFunction.Average(O.Cells(I, "C").Resize(5, 1)): J = J + 1
Next I 'prochaine ligne (par pas de 5) de la boucle
End Sub

ThauThème,

L'erreur "Incompatibilité de type" apparaît...

Je suis novice en VBA et m'excuse de devoir revenir vers toi une nouvelles fois.

En te remerciant.

Léo

La PJ*

Ici pardon*

Bonjour,

Une proposition réalisée avec Power Query (Excel 2016).

A te relire.

Cdlt.

6leeo01.xlsx (44.49 Ko)

Bonjour Jean-Eric et merci pour ton message.

Le tableau semble parfait, cependant, j'aimerai réaliser ces calculs avec différents fichiers. Je ne vois pas de code dans le fichier que tu m'as transmis.

Comment as tu fait ?

Cordialement, Léo.

Re,

Comme écrit précédemment, j'ai utilisé Power Query (récupérer et transformer) sous Excel 2016.

J'ai le sentiment que cela ne te dit pas grand chose.

Me trompe je ?

Un lien de présentation et d'aide :

https://support.office.com/fr-fr/article/aide-de-microsoft-power-query-pour-excel-2b433a85-ddfb-420b-9cda-fe0e60b82a94?ui=fr-FR&rs=fr-FR&ad=FR

A te relire.

Cdlt.

Merci à toi, mais malheureusement je ne peux utiliser Power Query avec ma version d'Excel...

Léo.

Rechercher des sujets similaires à "calcul moyennes"