Formule Moyenne : cellules Filtrée, Masquée, Sans 0

hardgratte Messages postés 482 Statut Membre -  
hardgratte Messages postés 482 Statut Membre -
Bonjour,

J'ai un soucis qui a l'air simple au premier abord, mais que je n'ai pas réussi à résoudre malgré mes recherches.
Je souhaite faire un moyenne qui ne prend pas en compte :
- Les cellules filtrées
- Les cellules masquées
- Les cellules contenant des "0" (qui résultent d'un calcul appliqué à des cellules pas encore complétées)

Je souhaite, en fait, combiner ces 2 formules :
=MOYENNE.SI(L8:L6000;">0")
=SOUS.TOTAL(101;L8:L6000)

Un genre de "SOUS.TOTAL.SI"... mais ça n'existe pas en l'état.

Merci d'avance pour vos suggestions.

Configuration: Windows / Chrome 101.0.4951.67

2 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Fonction personnalisée à mettre dans un module de l'éditeur VBA (ALt+F11 pour ouvrir éditeur - Insertion Module - copier coller la macro dans la page blanche - fermer l'éditeur)
    Function moyenne_perso(plage As Range)
    For Each cell In plage
    n = cell.Row
    valeur = cell.Value
    If Rows(n).Hidden = False And valeur > 0 Then
    tot = tot + valeur
    nbre = nbre + 1
    End If
    Next
    moyenne_perso = tot / nbre
    End Function


    S'emploie comme n'importe quelle fonction selon la syntaxe
    =moyenne_perso(plage à traiter)
    par ex =moyenne_perso(L8:L1000)

    Cdlmnt
    Via

    0
    1. hardgratte Messages postés 482 Statut Membre 76
       
      Bonjour Via55,
      Merci pour la réponse.
      J'aurais souhaité ne pas utiliser de VAB sur ce document (j'ai réussi à m'en passer jusque là).
      Pas moyen de reproduire ça dans une formule ?
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    La seule fonction qui exclue les cellules filtrées ou masquées est à ma connaissance SOUS;TOTAL

    Donc soit tu arrives à masquer par filtrer aussi les lignes avec des 0 et plus de problème
    soit tu modifies ta formule de calcul pour qu'au lieu de 0 elle renvoie du vide qui lui n'est pas comptabilisé dans une moyenne en faisant par exemple = SI(ta formule actuelle=0;"";ta formule actuelle)

    0
    1. hardgratte Messages postés 482 Statut Membre 76
       
      Oui j'ai fini par faire comme ça, merci pour le conseil.
      0