Moyenne Journalière

  • Initiateur de la discussion Initiateur de la discussion xvella
  • Date de début Date de début

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 !

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

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

@+
 
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)
 
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
 
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
 
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++
 
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
 
- 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
14
Affichages
484
Réponses
1
Affichages
188
W
Réponses
15
Affichages
568
Réponses
10
Affichages
268
Retour