Moyenne d'une cellule de plusieurs feuille variable

Bonjour,

J'essaye depuis quelques temps de réaliser une formule moyenne avec indirect mais je n'y arrive pas.

=MOYENNE(INDIRECT("'"&(D1)&"'!E7")&":"&INDIRECT("'"&(G1)&"'!E7"))

Je sollicite votre aide car j'ai essayé plusieurs formule du même type que je n'arrive pas à faire fonctionner.

Je souhaite faire la moyenne d'une cellule sur plusieurs onglet, celle-ci "=MOYENNE('2010:2021'!D7)"marche très bien mais m'oblige à modifier toutes les formules de la page chaque fois que je rajoute une feuille exemple cette année, j'ai rajouté 2022.

J'essaye avec indirect car je souhaiterais que ma moyenne sois pris sur les feuilles de la 1ère année inscrite en D1 et la dernière année en G1 et si elle peut se copier au autres cellules c'est encore mieux.

Je joins le fichier ou j'ai supprimé des années et des données volontairement car le fichier était trop lourd pour être partagé, tout ce passe dans l'onglet Moyenne ou j'ai réalisé plusieurs essais

Merci à tous ce qui peuvent m'apporter leur aide

bonjour,

A ma connaissance, Indirect ne permet pas l'utilisation d'un intervalle de feuilles, il faut passer par VBA.

je t'ai fait une fonction personnalisée qui produit une liste des valeurs de cellules de chaque feuille comprise dans un intervalle. Chaque cellule de chaque feuille étant identifiée par une même adresse. Après tu peux appliquer une fonction sur cette liste.

=arrayfeuilles("2010","2020",M7) crée une liste de valeurs de la cellule M7 des feuilles 2010 à 2020.

combinée avec une fonction

=moyenne(arrayfeuilles("2010","2020",M7)) pour avoir la moyenne des valeurs de la liste (remplacer les , par ; selon ta configuration excel)

Function arrayfeuilles(fd As String, ff As String, plage As range)
    'fonction qui renvoie un tableau à une dimension des valeurs d'une cellule (plage) de chaque feuille de la feuille fd à la feuille ff, selon leur ordre

    'fd = nom feuille de départ, ff = nom feuille finale, plage = référence à une cellule dont on veut la valeur

    Dim ctr              'ctr compteur de valeurs,
    Dim ws              'ws  feuille en cours,
    Dim tb()            'tb() tableau des valeurs trouvées,
    Dim flag            ' flag indicateur qu'on a trouvé la feuille début.

    If plage.Count <> 1 Then Exit Function 'on ne peut mentionner la référence que d'une cellule
    pa = plage.Address ' pa = adresse de la cellule dont on veut les valeurs (sans référence à la feuille)
    For Each ws In Worksheets 'on parcourt toutes les feuilles du classeurs dans l'ordre.
        If ws.Name = fd Then 'si le nom de feuille en cours = nom de feuille de départ, on met le flag à 1 on a trouvé la première feuille
            flag = 1
        End If
        If flag = 1 Then 'si première feuille trouvée
            ctr = ctr + 1 'on incrémente le compteur de valeur
            ReDim Preserve tb(1 To ctr) ' on adapte la taille du tableau des valeurs
            tb(ctr) = ws.range(pa) ' on copie la valeur de la cellule dont l'adresse est pa dans le tableau des valeurs trouvées
            If ws.Name = ff Then Exit For 'si on a atteint la feuille de fin on sort de la boucle
        End If
    Next
    arrayfeuilles = tb 'on renvoie la tableau des valeurs comme résultat de la fonction
End Function

Merci h2so4,

Cela fait le job demandé.

Ayant plusieurs fichiers du même type et pour comprendre un peu ton code VBA car je suis tout juste débutant, est il possible de me mettre quelques commentaires sur le code.

Je passe en résolu car ta solution me convient parfaitement

re,

j'ai mis les commentaires voir ci-dessus.

Super, merci pour ta réactivité

Rechercher des sujets similaires à "moyenne feuille variable"