VBA-Moyenne excluant valeur nulle ou vide Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
L
La Ganache
Jeune membre
Jeune membre
Messages : 20
Appréciation reçue : 1
Inscrit le : 24 juillet 2017
Version d'Excel : 2010 EN

Message par La Ganache » 4 septembre 2017, 09:17

Bonjour à tous,

Je viens vers vous car après quelques jours de réflexions je reste bloqué.

J'aimerai pouvoir sous VBA créer une fonction permettant d'effectuer une moyenne qui exclue les cellules ayant une valeur nulle ou "vide".

La moyenne doit également être effectué sur les cellules ayant une couleur intérieure défini.

J'arrive quasiment à tout faire sauf la partie concernant l'exclusion des cellules.

Je vous laisse découvrir le code que j'ai pu trouver et modifier en partie sur internet :
Function moyenneCouleur(plage As Range, couleur As Range) As Double
    Dim coul As Long, c As Range, nb As Long, total As Double
    coul = couleur.Interior.ColorIndex
    For Each c In plage
        If c.Interior.ColorIndex = coul Then
            nb = nb + 1
            total = total + c
        End If
    Next c
    moyenneCouleur = total / nb
End Function
La formule que j'utilise dans ma cellule suivante et la suivante :

moyenneCouleur(D6:AI6;AN3)

D6:AI6 (ligne concernée)
AN3 cellule contenant couleur concernée.

PS: la formule marcherait également si au lieu de mettre formule sur un ensemble de données je souhaiterai qu'elle s'applique à l'ensemble de la ligne :
moyenneCouleur(6:6;AN3) ? :roll:

Un grand merci pour toutes les idées me permettant d'arriver à mon but
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 4 septembre 2017, 10:05

Bonjour,

Tu peux ajouter ton test supplémentaire....
Function moyenneCouleur(plage As Range, couleur As Range) As Double
    Dim coul As Long, c As Range, nb As Long, total As Double
    coul = couleur.Interior.ColorIndex
    For Each c In plage
        If c <> "" And c <> 0 Then
          If c.Interior.ColorIndex = coul Then
              nb = nb + 1
              total = total + c
          End If
        End If
    Next c
    moyenneCouleur = total / nb
End Function
En espèrant que cela t'aide ...
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
L
La Ganache
Jeune membre
Jeune membre
Messages : 20
Appréciation reçue : 1
Inscrit le : 24 juillet 2017
Version d'Excel : 2010 EN

Message par La Ganache » 4 septembre 2017, 10:14

Bonjour James007,

Un grand merci pour ton aide, cela fonctionne à merveille ! :D

La Ganache
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 4 septembre 2017, 10:20

Ravi que cela te convienne ... :wink:

Merci ... pour tes remerciements ... :smile:
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message