Nouvelle aide pour formule perso Excel

Bonjour à tous et à toutes,

J'ai créé une formule personnalisée sous Excel avec le code suivant :
"
Public Function HOMOG(PlageDeCellules As Range) As Double

Dim Moyenne, MoyenneInf, MoyenneSup As Double
Moyenne = WorksheetFunction.Average(PlageDeCellules)
MoyenneInf = (Moyenne - Moyenne * 0.1)
MoyenneSup = (Moyenne + Moyenne * 0.1)

HOMOG = ((WorksheetFunction.CountIf(PlageDeCellules, ">" & MoyenneInf) - (WorksheetFunction.CountIf(PlageDeCellules, "<" & MoyenneSup)) / (WorksheetFunction.CountA(PlageDeCellules))))

End Function
"

Mon souci est le suivant : ce code ne fonctionne que si mes valeurs nommées ici Moyenne, MoyenneInf et MoyenneSup sont des valeurs entières ... à partir du moment où une virgule traine ... le résultat indiqué est "0" :(
Où me suis-je trompé ?
Merci par avance

8 réponses

  1. Contributeur
    Bonjour,

    le problème vient surement de
    Dim Moyenne, MoyenneInf, MoyenneSup As Double 
    Dans cette ligne, seule la dernière variable est considérée en Double, les autres sont en Variant.

    Modifie la ligne en
    Dim Moyenne As Double, MoyenneInf As Double, MoyenneSup As Double 
    et ça devrait aller mieux.

    cordialement.
    0
    1. Bien essayé ... je l'avais tenté aussi (et je viens de le refaire) ... toujours la même chose
      0
      1. bonjour

        essaies ceci

        Public Function HOMOG(Plage As Range) As Double 
        Dim Moyenne, MoyenneInf, MoyenneSup, MI, MS, N 
        Moyenne = WorksheetFunction.Average(Plage) 
        MoyenneInf = (Moyenne - Moyenne * 0.1) 
        MoyenneSup = (Moyenne + Moyenne * 0.1) 
        MI = WorksheetFunction.CountIf(Plage, ">" & LTrim(Str(MoyenneInf))) 
        MS = WorksheetFunction.CountIf(Plage, "<" & LTrim(Str(MoyenneSup))) 
        N = WorksheetFunction.CountA(Plage) 
        HOMOG = (MI - MS) / N 
        End Function


        bonne suite
        0
        1. Bonjour,

          Merci ccm81 mais ça ne marche pas ...
          0
          1. :(
            Résultat négatif donc pas bon.

            Mais l'erreur vient peut être de ma formule initiale ... dont l'objectif est de compter le nombre de valeurs comprises dans un intervalle de + ou -10% de la moyenne ...
            D'où le calcul de MoyenneInf et MoyenneSup pour les bornes de mon intervalle ...
            0
            1. pour compter le nombre de valeurs comprises dans un intervalle de + ou -10% de la moyenne

              Public Function HOMOG(Plage As Range) As Double 
              Dim Moyenne, MoyenneInf, MoyenneSup, MI, MS, N 
              Moyenne = WorksheetFunction.Average(Plage) 
              MoyenneInf = Moyenne * 0.9
              MoyenneSup = Moyenne * 1.1
              MI = WorksheetFunction.CountIf(Plage, "<" & LTrim(Str(MoyenneInf))) 
              MS = WorksheetFunction.CountIf(Plage, "<=" & LTrim(Str(MoyenneSup))) 
              HOMOG = MS - MI 
              End Function

              bonne suite
              0