Option Base 0
Sub Traitement()
Dim Année%, Mois%, Jour%, Heure%, Compteur&, Données(2010 To 2013, 1 To 12, 1 To 31, 23)
Dim Moyenne(1 To 31, 1 To 12), Minimum(1 To 31, 1 To 12), Maximum(1 To 31, 1 To 12)
'Chargement des données dans un tableau à quatre dimensions.
    For Année = 2010 To 2013: For Mois = 1 To 12: For Jour = 1 To 31: For Heure = 0 To 23
        Données(Année, Mois, Jour, Heure) = Sheets(CStr(Année) & "-" & Mois).Cells(1, 2).Offset(Jour, Heure).Value
    Next Heure, Jour, Mois, Année
'Cela fait, on peut faire rapidement tous les traitements qu'on veut sur les 35 712 données
'(onglets 2010-1 à 2013-12) sans avoir besoin de lire quoi que ce soit dans le classeur.
'Chaque donnée est identifiée par : Données(Année, Mois, Jour, Heure).
'Par exemple, établissement des tableaux annuels de moyennes quotidiennes (onglets jaunes):
    For Année = 2010 To 2013
        For Mois = 1 To 12: For Jour = 1 To 31
            For Heure = 0 To 23
                If Not IsEmpty(Données(Année, Mois, Jour, Heure)) Then
                    Compteur = Compteur + 1
                    Moyenne(Jour, Mois) = Moyenne(Jour, Mois) + Données(Année, Mois, Jour, Heure)
                End If
            Next Heure
            If Compteur Then Moyenne(Jour, Mois) = Moyenne(Jour, Mois) / Compteur: Compteur = 0
        Next Jour, Mois
        Sheets(CStr(Année)).Cells(2, 2).Resize(31, 12).Value = Moyenne
        Erase Moyenne
    Next Année
'Ou valeurs quotidiennes moyennes, minimales,maximales, pour la période 2010 à 2013 (onglets bleus):
    For Mois = 1 To 12: For Jour = 1 To 31
        Minimum(Jour, Mois) = 1.79769313486231E+308
        Maximum(Jour, Mois) = -1.79769313486231E+308
        For Année = 2010 To 2013: For Heure = 0 To 23
            If Not IsEmpty(Données(Année, Mois, Jour, Heure)) Then
                Compteur = Compteur + 1
                Moyenne(Jour, Mois) = Moyenne(Jour, Mois) + Données(Année, Mois, Jour, Heure)
                If Minimum(Jour, Mois) > Données(Année, Mois, Jour, Heure) Then Minimum(Jour, Mois) = Données(Année, Mois, Jour, Heure)
                If Maximum(Jour, Mois) < Données(Année, Mois, Jour, Heure) Then Maximum(Jour, Mois) = Données(Année, Mois, Jour, Heure)
            End If
        Next Heure, Année
        If Compteur Then Moyenne(Jour, Mois) = Moyenne(Jour, Mois) / Compteur: Compteur = 0 Else Minimum(Jour, Mois) = Empty: Maximum(Jour, Mois) = Empty
    Next Jour, Mois
    Sheets("moyenne").Cells(2, 2).Resize(31, 12).Value = Moyenne
    Sheets("minimum").Cells(2, 2).Resize(31, 12).Value = Minimum
    Sheets("maximum").Cells(2, 2).Resize(31, 12).Value = Maximum
    Erase Moyenne, Minimum, Maximum
'Ou autre chose :
'Code
'Code
'Code
    Erase Données
End Sub