Boucle pour faire une moyenne de données situées sur plusieurs onglets

Ci-joint un fichier excel comportant plusieurs onglets de relevés de températures (Th) de 23 thermomètres (c'est pourquoi il y a 23 onglets Th : Th1, Th2, Th3...

Dans l'onglet "Th Moy", je souhaite faire une moyenne des données présentes dans tous les onglets Th (de Th1 à Th23)

Ainsi, pour exemple, en cellule C26 de l'onglet "Th Moy", je fais le calcul suivant :

  • je vais dans l'onglet Th1
  • je fais la moyenne du range C2 à C22
  • je retourne le résultat de cette moyenne en cellule C26, dans l'onglet "Th Moy"

2ème exemple, en cellule C27 je fais le calcul suivant :

  • je vais dans l'onglet Th2
  • je vais la moyenne du range C2 à C22
  • je retourne le résultat de cette moyenne en cellule C27, dans l'onglet "Th Moy"

3ème exemple, en cellule C28 je fais le calcul suivant :

  • je vais dans l'onglet Th3
  • je vais la moyenne du range C2 à C22
  • je retourne le résultat de cette moyenne en cellule C28, dans l'onglet "Th Moy"

et ainsi de suite...

La solution en VBA ferait certainement appel à une boucle, mais je ne sais pas faire. Pour le moment j'ai fait ce code qui est incomplet:

Sub Synthese()

Dim i As Byte
For i = 1 To 23

    Worksheets("Th1").Cells(5, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th2").Cells(6, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th3").Cells(7, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th4").Cells(8, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th5").Cells(9, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th6").Cells(10, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th7").Cells(11, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th8").Cells(12, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th9").Cells(13, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th10").Cells(14, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th11").Cells(15, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th12").Cells(16, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th13").Cells(17, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th14").Cells(18, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th15").Cells(19, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th16").Cells(20, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th17").Cells(21, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th18").Cells(22, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th19").Cells(23, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th20").Cells(24, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th21").Cells(24, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th22").Cells(24, 3 + i) = Sheets(i).Range("C2:C22").Value
    Worksheets("Th23").Cells(24, 3 + i) = Sheets(i).Range("C2:C22").Value

Next
End Sub

Qq'un aurait une idée?

Bonsoir ruliann voici une boucle de ton code

Sub Synthese()
    Dim i As Integer
    Dim wsMoy As Worksheet
    Dim wsTh As Worksheet

    ' Référence à l'onglet "Th Moy"
    Set wsMoy = ThisWorkbook.Sheets("Th Moy")

    ' Boucle à travers les onglets "Th1" à "Th23"
    For i = 1 To 23
        ' Référence à l'onglet "ThX" où X est l'indice de boucle
        Set wsTh = ThisWorkbook.Sheets("Th" & i)

        ' Calcul de la moyenne et l'insérer dans l'onglet "Th Moy"
        wsMoy.Cells(25 + i, 3).Value = Application.WorksheetFunction.Average(wsTh.Range("C2:C22"))
    Next i
End Sub

salut stepaustras

et grand merci pour ton code qui fait très bien le job pour le range C26 à C48 de l'onglet "Th Moy"

est ce que tu saurais faire la même chose de manière à ce que le code traite aussi toutes les colonnes suivantes, cêst à dire de la colonne D à la colonne CT ? ou me dire comment faire?

Essai ceci

Sub Synthese()
    Dim i As Integer
    Dim wsMoy As Worksheet
    Dim wsTh As Worksheet
    Dim col As Integer

    ' Référence à l'onglet "Th Moy"
    Set wsMoy = ThisWorkbook.Sheets("Th Moy")

    ' Boucle à travers les onglets "Th1" à "Th23"
    For i = 1 To 23
        ' Référence à l'onglet "ThX" où X est l'indice de boucle
        Set wsTh = ThisWorkbook.Sheets("Th" & i)

        ' Boucle à travers les colonnes de D à CT
        For col = 4 To 90
            ' Calcul de la moyenne et l'insérer dans l'onglet "Th Moy"
            wsMoy.Cells(25 + i, col).Value = Application.WorksheetFunction.Average(wsTh.Cells(2, col).Resize(21, 1))
        Next col
    Next i
End Sub

super sympa merci! cela me servira d'exemple pour l'onglet ecart type

bonne soirée!

De rien, bonne soirée

Rechercher des sujets similaires à "boucle moyenne donnees situees onglets"