XL 2016 CALCUL DE MOYENNE

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 !

anzoumanadf

XLDnaute Nouveau
bonjour a tous,

j'espère que vous allez tous bien . je sollicite au près de vous une aide pour m'aider à calculer la moyenne journalière des colonne E,I,J,K et L .

le fichier joint contient plusieurs feuilles auxquelles la formule doit également être appliquée.

ex: calcul la moyenne de la colonne E

du 01/01/2016 00:00:00 a 23:45:00 , puis 02/01/2016 00:00:00 a 23:45:00.................................... jusqu'au 31/12/2016 23:45;00
 
bonjour a tous,

j'espère que vous allez tous bien . je sollicite au près de vous une aide pour m'aider à calculer la moyenne journalière des colonne E,I,J,K et L .

le fichier joint contient plusieurs feuilles auxquelles la formule doit également être appliquée.

ex: calcul la moyenne de la colonne E

du 01/01/2016 00:00:00 a 23:45:00 , puis 02/01/2016 00:00:00 a 23:45:00.................................... jusqu'au 31/12/2016 23:45;00
Bonjour,

Il n'y a pas de fichier.
 
Bonjour anzoumanadf, Etoto, Chris401, chris, le forum,
Pourquoi 2 colonnes date ?
Dans le fichier joint la 2ème colonne (F) me sert à déterminer les dates (sans les heures).

Du coup les formules des résultats sont simples car elles utilisent la fonction MOYENNE.SI.

Bien sûr le tableau source a été formaté en tableau structuré.

Remarques :

- chez Chris401 les résultats en R2 et S2 sont erronés car les moyennes comptent les cellules vides K2 L2 L3

- je ne comprends pas pourquoi le TCD de chris donne des résultats très différents.

A+
 

Pièces jointes

Parce-ce qu'en ligne 98 tu as le 01/01 alors que le fichier initial contient 02/01
Ah mais qu'est-ce qu'il se passe en A98 ?

C'est incroyable, la cellule affiche 02/01/2019 alors que dans la barre de formule il y a 01/01/2019 !!!

Effectivement avec 02/01/2019 dans la barre de formule je trouve bien tes résultats.

A98 est corrigée dans le fichier joint.

C'est une solution VBA avec cette macro dans le code de la feuille "Moyennes" :
Code:
Private Sub Worksheet_Activate()
Dim d As Object, tablo, colDate%, colResu(), ncol%, resu(), nombre&(), i&, dat, n&, nn&, j%, x$
Set d = CreateObject("Scripting.Dictionary")
tablo = [Tableau1] 'tableau structuré
colDate = 6 'colonne F
colResu = Array(5, 9, 10, 11, 12) 'colonnes E I J K L
ncol = UBound(colResu) + 2
ReDim resu(1 To UBound(tablo), 1 To ncol)
ReDim nombre(1 To UBound(tablo), 1 To ncol)
For i = 1 To UBound(tablo)
    dat = tablo(i, colDate)
    If Not d.exists(dat) Then
        n = n + 1
        d(dat) = n 'mémorise la ligne
    End If
    nn = d(dat)
    resu(nn, 1) = dat
    For j = 2 To ncol
        x = CStr(tablo(i, colResu(j - 2)))
        If IsNumeric(x) Then resu(nn, j) = resu(nn, j) + CDbl(x): nombre(nn, j) = nombre(nn, j) + 1
Next j, i
For i = 1 To n
    For j = 2 To ncol
        If nombre(i, j) Then resu(i, j) = resu(i, j) / nombre(i, j)
Next j, i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] '1ère cellule de restitution
    With .Resize(n, ncol)
        .Value = resu
        .Interior.ColorIndex = 36 'jaune clair
        .Borders.Weight = xlHairline 'bordures
    End With
    .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).Delete xlUp 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle se déclenche quand on active la feuille.

Elle est très rapide car elle utilise le Dictionary et des tableaux VBA.
 

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

Discussions similaires

Réponses
17
Affichages
504
Réponses
9
Affichages
1 K
Retour