Moyenne Journalière

xvella

XLDnaute Occasionnel
Bonsoir Forum,
Bonsoir Tous,

J'ai un petit souçi, j'aimerais dédoublelonné un tableau vers un autre tous en faisant la moyenne journalière de certaines données.

Merci d'avance pour vos aide.

A+
 

Pièces jointes

  • Moyenne_Journalière.xls
    22.5 KB · Affichages: 138

Tibo

XLDnaute Barbatruc
Re : Moyenne Journalière

Bonsoir,

Une tentative avec ceci :

en K5 :

Code:
=MIN($C$5:$C$69)

en K6 :

Code:
=K5+1

à recopier vers le bas

en L5 :

Code:
=SOMME.SI($C$5:$C$69;$K5;E$5:E$69)/NB.SI($C$5:$C$69;$K5)

à recopier vers le bas et vers la droite

Je te laisse tester

@+
 

xvella

XLDnaute Occasionnel
Re : Moyenne Journalière

Bonsoir Tibo,

Je suis désolé mais cela mais impossible car de tiré une formule sur un tableau qui à environ trente milles ligne et cinquante collones de donnée, prendrait vraiment trop de place.

Une solution VBA reste plus intérressante.

Merçi à toi.
A+

(ce qu'il y a dans le fichier n'est qu'un petit bout du tableau)
 

Efgé

XLDnaute Barbatruc
Re : Moyenne Journalière

Bonjour xvella, Bonjour Tibo,
Une méthode pour "tirer" des formules par macro (celles de Tibo). Je pars du principe que la colonne B est toujours remplie.
Code:
[COLOR=blue]Sub[/COLOR] Formules()
LstRow = Cells(Rows.Count, 2).End(xlUp).Row
Range("K5").FormulaLocal = "=MIN($C$5:$C$69)"
Range("K6:K" & LstRow).FormulaLocal = "=K5+1"
Range("L5:O" & LstRow).FormulaLocal = "=SOMME.SI($C$5:$C$69;$K5;E$5:E$69)/NB.SI($C$5:$C$69;$K5)"
[COLOR=blue]End Sub[/COLOR]
Espérant avoir aidé
Cordialement
 

CISCO

XLDnaute Barbatruc
Re : Moyenne Journalière

Bonsoir

Bonsoir Tibo,
car de tiré une formule sur un tableau qui à environ trente milles ligne et cinquante collones de donnée, prendrait vraiment trop de place.

Une autre solution :
Tu écris les formules proposées par Tibo.

Tu "coupes" horizontalement en deux ta feuille. Tu te places dans la motié inférieure. Tu écris dans la zone en haut à gauche, juste à gauche de la barre de formule, A30000, puis tu fais entrer.
Tu copies les cellules intéressantes, en K5:O5. Tu sélectionnes la plages K6:O30000 en utilisant maj, et tu colles.

@ plus
 

xvella

XLDnaute Occasionnel
Re : Moyenne Journalière

Bonsoir Tibo, Efgé et CISCO

Je vous remercient tous trois de vous penchez sur mon problème.

Avec les formules certes cela marche mes la sélection est dépaser en s'étandant au-delà jusqu'à Mars2010.

Sur le fichier global cela marche aussi mais le fichier prend trop d'importance sois 268Mo
qui se trouve être trop lourd.

Au départ je pensait dédoublelonné les dates puis utilisé les collections pour faire les moyennes seule les collections ne sont pas mon fort.

Merci à vous trois.

A++
 

ROGER2327

XLDnaute Barbatruc
Re : Moyenne Journalière

Bonsoir à tous
Un essai avec cette procédure :
Code:
[COLOR=DarkSlateGray][B]Sub toto()
Dim i&, j&, k&, tmp
Dim oDat(), sDat(), oCml(), oColl As New Collection
  With Application
    .ScreenUpdating = 0: .Calculation = -4135
    oDat = Range("B4").CurrentRegion.Value
    With Range("K4")
      sDat = Range(.Cells, .End(xlToRight)).Value
      .CurrentRegion.ClearContents
      .Cells.Resize(1, UBound(sDat, 2)).Value = sDat
      Erase sDat
      On Error Resume Next
      For i = 2 To UBound(oDat, 1)
        oColl.Add oDat(i, 2), CStr(oDat(i, 2))
      Next i
      On Error GoTo 0
      If oColl.Count > 0 Then
        ReDim sDat(1 To oColl.Count, 1 To 5)
        For i = 2 To UBound(sDat, 1)
          sDat(i, 1) = oColl(i)
        Next i
        For i = 1 To oColl.Count
          tmp = oColl(i)
          sDat(i, 1) = tmp
          oCml = Array(Array(0, 0), Array(0, 0), Array(0, 0), Array(0, 0))
          For j = 2 To UBound(oDat, 1)
            If oDat(j, 2) = tmp Then
              For k = 0 To 3
                If Not IsEmpty(oDat(j, 4 + k)) Then oCml(k)(0) = oCml(k)(0) + oDat(j, 4 + k): oCml(k)(1) = oCml(k)(1) + 1
              Next k
            End If
          Next j
          For k = 0 To 3
            If oCml(k)(1) > 0 Then sDat(i, k + 2) = oCml(k)(0) / oCml(k)(1)
          Next k
        Next i
        .Offset(1, 0).Resize(UBound(sDat, 1), UBound(sDat, 2)) = sDat
      End If
    End With
    .Calculation = -4105: .ScreenUpdating = 1
  End With
End Sub[/B][/COLOR]
ROGER2327
#4545


Samedi 14 As 138 (Saint Pierre Bonnard, peintre des Phynances, SQ)
26 Brumaire An CCXIX
2010-W46-2T23:49:33Z
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 049
Membres
104 012
dernier inscrit
baffyt2