Nouvelle aide pour formule perso Excel

Fermé
Sylvain_B Messages postés 4 Date d'inscription vendredi 13 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012 - 18 juil. 2012 à 17:47
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 25 juil. 2012 à 15:20
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
A voir également:

8 réponses

chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
18 juil. 2012 à 17:55
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
Sylvain_B Messages postés 4 Date d'inscription vendredi 13 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012
18 juil. 2012 à 18:05
Bien essayé ... je l'avais tenté aussi (et je viens de le refaire) ... toujours la même chose
0
Up!
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 24/07/2012 à 17:21
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Merci ccm81 mais ça ne marche pas ...
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
25 juil. 2012 à 09:33
bonjour

ce que j'ai obtenu, est ce que ça correspond?
https://www.cjoint.com/?0GzjGmViSHO

bo nne suite
0
:(
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 25/07/2012 à 15:21
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