Nouvelle aide pour formule perso Excel
Sylvain_B
Messages postés
4
Statut
Membre
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
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
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:
- Nouvelle aide pour formule perso Excel
- Formule moyenne excel plusieurs colonnes - Guide
- Formule si et excel - Guide
- Darkino nouvelle adresse - Guide
- Liste déroulante excel - Guide
- Formule somme excel ligne - Guide
8 réponses
Bonjour,
le problème vient surement de
Modifie la ligne en
cordialement.
le problème vient surement de
Dim Moyenne, MoyenneInf, MoyenneSup As DoubleDans 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 Doubleet ça devrait aller mieux.
cordialement.
bonjour
essaies ceci
bonne suite
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour
ce que j'ai obtenu, est ce que ça correspond?
https://www.cjoint.com/?0GzjGmViSHO
bo nne suite
ce que j'ai obtenu, est ce que ça correspond?
https://www.cjoint.com/?0GzjGmViSHO
bo nne suite
:(
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 ...
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 ...
pour compter le nombre de valeurs comprises dans un intervalle de + ou -10% de la moyenne
bonne suite
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