Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Ãtape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Ãtape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Ãtape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Ãtape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Ãtape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Ãtape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Ãtape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Ãtape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Ãtape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
-----Message d'origine-----
Je voudrais créer une fonction me permettant de calculer
la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
�tape 1 L'idée consiste à faire la somme cumulée du
nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
�tape 2 Divisée par deux la somme donc dans ce cas 65/2
= 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut
donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur
à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans
et 4 ans afin
d'intéger le tout dans une formule pour faire une
interpolation
�tape 3 La formule d'interpolation est : Age inférieure
(3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur
supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un
fonction VBA
.
-----Message d'origine-----
Je voudrais créer une fonction me permettant de calculer
la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
�tape 1 L'idée consiste à faire la somme cumulée du
nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
�tape 2 Divisée par deux la somme donc dans ce cas 65/2
= 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut
donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur
à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans
et 4 ans afin
d'intéger le tout dans une formule pour faire une
interpolation
�tape 3 La formule d'interpolation est : Age inférieure
(3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur
supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un
fonction VBA
.
-----Message d'origine-----
Je voudrais créer une fonction me permettant de calculer
la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
�tape 1 L'idée consiste à faire la somme cumulée du
nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
�tape 2 Divisée par deux la somme donc dans ce cas 65/2
= 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut
donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur
à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans
et 4 ans afin
d'intéger le tout dans une formule pour faire une
interpolation
�tape 3 La formule d'interpolation est : Age inférieure
(3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur
supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un
fonction VBA
.
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
bonjour Statman,
Function AgeMedian(NombreIndividus As Range, Age As Range) As Double
Dim arr()
Dim i As Integer, Vi As Integer, Vs As Integer, Ai As Integer, somm As Integer
For i = 1 To NombreIndividus.Count
ReDim Preserve arr(i)
somm = somm + NombreIndividus.Item(i)
arr(i) = somm
Next
For i = 1 To NombreIndividus.Count
If arr(i) > somm / 2 Then
Vs = arr(i)
Vi = arr(i - 1)
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
Exit For
End If
Next
AgeMedian = Ai + (((somm / 2) - Vi) / (Vs - Vi))
End Function
isabelle
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Ãtape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Ãtape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Ãtape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
bonjour Statman,
Function AgeMedian(NombreIndividus As Range, Age As Range) As Double
Dim arr()
Dim i As Integer, Vi As Integer, Vs As Integer, Ai As Integer, somm As Integer
For i = 1 To NombreIndividus.Count
ReDim Preserve arr(i)
somm = somm + NombreIndividus.Item(i)
arr(i) = somm
Next
For i = 1 To NombreIndividus.Count
If arr(i) > somm / 2 Then
Vs = arr(i)
Vi = arr(i - 1)
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
Exit For
End If
Next
AgeMedian = Ai + (((somm / 2) - Vi) / (Vs - Vi))
End Function
isabelle
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Ãtape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Ãtape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Ãtape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
bonjour Statman,
Function AgeMedian(NombreIndividus As Range, Age As Range) As Double
Dim arr()
Dim i As Integer, Vi As Integer, Vs As Integer, Ai As Integer, somm As Integer
For i = 1 To NombreIndividus.Count
ReDim Preserve arr(i)
somm = somm + NombreIndividus.Item(i)
arr(i) = somm
Next
For i = 1 To NombreIndividus.Count
If arr(i) > somm / 2 Then
Vs = arr(i)
Vi = arr(i - 1)
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
Exit For
End If
Next
AgeMedian = Ai + (((somm / 2) - Vi) / (Vs - Vi))
End Function
isabelle
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Ãtape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Ãtape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Ãtape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Hello,
' Usage : =Interpol(Ages,NbrIndividus)
Function InterPol(LesX As Range, LesY As Range) As Variant
Dim LaSommeY As Double
Dim res As Variant, Ycumul As Variant
Dim i As Long, j As Long
j = LesY.Rows.Count
ReDim Ycumul(1 To j) ' bâtir les montants cumulés
LaSommeY = 0
For i = 1 To j
Ycumul(i) = LaSommeY + LesY(i)
LaSommeY = Ycumul(i)
Next i
res = Application.Match(LaSommeY / 2, Ycumul)
If IsError(res) Then
InterPol = CVErr(xlErrNum)
Exit Function
Else
InterPol = LesX(res) + ((LaSommeY / 2 - Ycumul(res)) / _
(Ycumul(res + 1) - Ycumul(res)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Statman" wrote in message
news:Je voudrais créer une fonction me permettant de calculer la médiane de
donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Hello,
' Usage : =Interpol(Ages,NbrIndividus)
Function InterPol(LesX As Range, LesY As Range) As Variant
Dim LaSommeY As Double
Dim res As Variant, Ycumul As Variant
Dim i As Long, j As Long
j = LesY.Rows.Count
ReDim Ycumul(1 To j) ' bâtir les montants cumulés
LaSommeY = 0
For i = 1 To j
Ycumul(i) = LaSommeY + LesY(i)
LaSommeY = Ycumul(i)
Next i
res = Application.Match(LaSommeY / 2, Ycumul)
If IsError(res) Then
InterPol = CVErr(xlErrNum)
Exit Function
Else
InterPol = LesX(res) + ((LaSommeY / 2 - Ycumul(res)) / _
(Ycumul(res + 1) - Ycumul(res)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Statman" <Statman@discussions.microsoft.com> wrote in message
news:A27912A6-B06E-4356-9CA4-84AD7F3DE26F@microsoft.com...
Je voudrais créer une fonction me permettant de calculer la médiane de
donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Hello,
' Usage : =Interpol(Ages,NbrIndividus)
Function InterPol(LesX As Range, LesY As Range) As Variant
Dim LaSommeY As Double
Dim res As Variant, Ycumul As Variant
Dim i As Long, j As Long
j = LesY.Rows.Count
ReDim Ycumul(1 To j) ' bâtir les montants cumulés
LaSommeY = 0
For i = 1 To j
Ycumul(i) = LaSommeY + LesY(i)
LaSommeY = Ycumul(i)
Next i
res = Application.Match(LaSommeY / 2, Ycumul)
If IsError(res) Then
InterPol = CVErr(xlErrNum)
Exit Function
Else
InterPol = LesX(res) + ((LaSommeY / 2 - Ycumul(res)) / _
(Ycumul(res + 1) - Ycumul(res)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Statman" wrote in message
news:Je voudrais créer une fonction me permettant de calculer la médiane de
donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
correction,
il faut remplacer la ligne :
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
par
Ai = Age.Item(i - 1)
isabelle
bonjour Statman,
Function AgeMedian(NombreIndividus As Range, Age As Range) As Double
Dim arr()
Dim i As Integer, Vi As Integer, Vs As Integer, Ai As Integer, somm As Integer
For i = 1 To NombreIndividus.Count
ReDim Preserve arr(i)
somm = somm + NombreIndividus.Item(i)
arr(i) = somm
Next
For i = 1 To NombreIndividus.Count
If arr(i) > somm / 2 Then
Vs = arr(i)
Vi = arr(i - 1)
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
Exit For
End If
Next
AgeMedian = Ai + (((somm / 2) - Vi) / (Vs - Vi))
End Function
isabelle
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
correction,
il faut remplacer la ligne :
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
par
Ai = Age.Item(i - 1)
isabelle
bonjour Statman,
Function AgeMedian(NombreIndividus As Range, Age As Range) As Double
Dim arr()
Dim i As Integer, Vi As Integer, Vs As Integer, Ai As Integer, somm As Integer
For i = 1 To NombreIndividus.Count
ReDim Preserve arr(i)
somm = somm + NombreIndividus.Item(i)
arr(i) = somm
Next
For i = 1 To NombreIndividus.Count
If arr(i) > somm / 2 Then
Vs = arr(i)
Vi = arr(i - 1)
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
Exit For
End If
Next
AgeMedian = Ai + (((somm / 2) - Vi) / (Vs - Vi))
End Function
isabelle
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
correction,
il faut remplacer la ligne :
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
par
Ai = Age.Item(i - 1)
isabelle
bonjour Statman,
Function AgeMedian(NombreIndividus As Range, Age As Range) As Double
Dim arr()
Dim i As Integer, Vi As Integer, Vs As Integer, Ai As Integer, somm As Integer
For i = 1 To NombreIndividus.Count
ReDim Preserve arr(i)
somm = somm + NombreIndividus.Item(i)
arr(i) = somm
Next
For i = 1 To NombreIndividus.Count
If arr(i) > somm / 2 Then
Vs = arr(i)
Vi = arr(i - 1)
Ai = Application.Index(Age, Application.Match(Vi, NombreIndividus))
Exit For
End If
Next
AgeMedian = Ai + (((somm / 2) - Vi) / (Vs - Vi))
End Function
isabelle
Je voudrais créer une fonction me permettant de calculer la médiane de donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Salut,
Une autre version, mais sans boucle (pour le fun):
Function InterPol2(LesX As Range, LesY As Range) As Variant
Dim ValYMed As Double
Dim r As Variant, Ycumul As Variant
r = LesY.Address(0, 0, xlA1, 0)
Ycumul = Evaluate("=MMULT(TRANSPOSE(ROW(" & r & ")^0)," & r & _
"*(ROW(" & r & ")<=TRANSPOSE(ROW(" & r & "))))")
ValYMed = Ycumul(UBound(Ycumul)) / 2
r = Application.Match(ValYMed, Ycumul) ' rech dichotomique rapide
If IsError(r) Then ' ValYMed < Plus petite valeur
InterPol2 = (ValYMed) / Ycumul(1)
Else
InterPol2 = LesX(r) + ((ValYMed - Ycumul(r)) / _
(Ycumul(r + 1) - Ycumul(r)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Daniel.M" wrote in message
news:e0PDE$Hello,
' Usage : =Interpol(Ages,NbrIndividus)
Function InterPol(LesX As Range, LesY As Range) As Variant
Dim LaSommeY As Double
Dim res As Variant, Ycumul As Variant
Dim i As Long, j As Long
j = LesY.Rows.Count
ReDim Ycumul(1 To j) ' bâtir les montants cumulés
LaSommeY = 0
For i = 1 To j
Ycumul(i) = LaSommeY + LesY(i)
LaSommeY = Ycumul(i)
Next i
res = Application.Match(LaSommeY / 2, Ycumul)
If IsError(res) Then
InterPol = CVErr(xlErrNum)
Exit Function
Else
InterPol = LesX(res) + ((LaSommeY / 2 - Ycumul(res)) / _
(Ycumul(res + 1) - Ycumul(res)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Statman" wrote in message
news:Je voudrais créer une fonction me permettant de calculer la médiane de
donnée(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Salut,
Une autre version, mais sans boucle (pour le fun):
Function InterPol2(LesX As Range, LesY As Range) As Variant
Dim ValYMed As Double
Dim r As Variant, Ycumul As Variant
r = LesY.Address(0, 0, xlA1, 0)
Ycumul = Evaluate("=MMULT(TRANSPOSE(ROW(" & r & ")^0)," & r & _
"*(ROW(" & r & ")<=TRANSPOSE(ROW(" & r & "))))")
ValYMed = Ycumul(UBound(Ycumul)) / 2
r = Application.Match(ValYMed, Ycumul) ' rech dichotomique rapide
If IsError(r) Then ' ValYMed < Plus petite valeur
InterPol2 = (ValYMed) / Ycumul(1)
Else
InterPol2 = LesX(r) + ((ValYMed - Ycumul(r)) / _
(Ycumul(r + 1) - Ycumul(r)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Daniel.M" <prenom.maher@bigfoot.inutil.com> wrote in message
news:e0PDE$nwEHA.1264@TK2MSFTNGP12.phx.gbl...
Hello,
' Usage : =Interpol(Ages,NbrIndividus)
Function InterPol(LesX As Range, LesY As Range) As Variant
Dim LaSommeY As Double
Dim res As Variant, Ycumul As Variant
Dim i As Long, j As Long
j = LesY.Rows.Count
ReDim Ycumul(1 To j) ' bâtir les montants cumulés
LaSommeY = 0
For i = 1 To j
Ycumul(i) = LaSommeY + LesY(i)
LaSommeY = Ycumul(i)
Next i
res = Application.Match(LaSommeY / 2, Ycumul)
If IsError(res) Then
InterPol = CVErr(xlErrNum)
Exit Function
Else
InterPol = LesX(res) + ((LaSommeY / 2 - Ycumul(res)) / _
(Ycumul(res + 1) - Ycumul(res)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Statman" <Statman@discussions.microsoft.com> wrote in message
news:A27912A6-B06E-4356-9CA4-84AD7F3DE26F@microsoft.com...
Je voudrais créer une fonction me permettant de calculer la médiane de
donnée
(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA
Salut,
Une autre version, mais sans boucle (pour le fun):
Function InterPol2(LesX As Range, LesY As Range) As Variant
Dim ValYMed As Double
Dim r As Variant, Ycumul As Variant
r = LesY.Address(0, 0, xlA1, 0)
Ycumul = Evaluate("=MMULT(TRANSPOSE(ROW(" & r & ")^0)," & r & _
"*(ROW(" & r & ")<=TRANSPOSE(ROW(" & r & "))))")
ValYMed = Ycumul(UBound(Ycumul)) / 2
r = Application.Match(ValYMed, Ycumul) ' rech dichotomique rapide
If IsError(r) Then ' ValYMed < Plus petite valeur
InterPol2 = (ValYMed) / Ycumul(1)
Else
InterPol2 = LesX(r) + ((ValYMed - Ycumul(r)) / _
(Ycumul(r + 1) - Ycumul(r)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Daniel.M" wrote in message
news:e0PDE$Hello,
' Usage : =Interpol(Ages,NbrIndividus)
Function InterPol(LesX As Range, LesY As Range) As Variant
Dim LaSommeY As Double
Dim res As Variant, Ycumul As Variant
Dim i As Long, j As Long
j = LesY.Rows.Count
ReDim Ycumul(1 To j) ' bâtir les montants cumulés
LaSommeY = 0
For i = 1 To j
Ycumul(i) = LaSommeY + LesY(i)
LaSommeY = Ycumul(i)
Next i
res = Application.Match(LaSommeY / 2, Ycumul)
If IsError(res) Then
InterPol = CVErr(xlErrNum)
Exit Function
Else
InterPol = LesX(res) + ((LaSommeY / 2 - Ycumul(res)) / _
(Ycumul(res + 1) - Ycumul(res)))
End If
Erase Ycumul
End Function
Salutations,
Daniel M.
"Statman" wrote in message
news:Je voudrais créer une fonction me permettant de calculer la médiane de
donnée(dans mon cas l'age médian)
Par exemple
Age Nombre d'individus
1 5
2 10
3 10
4 15
5 20
6 5
Étape 1 L'idée consiste à faire la somme cumulée du nombre d'individus
Age Nombre d'individus
1 5
2 15
3 25
4 40
5 60
6 65
Étape 2 Divisée par deux la somme donc dans ce cas 65/2 = 32,5
Donc l'âge médian se situe entre 3 et 4 ans il faut donc que le programme
puisse trouver la valeur inférieur à 32,5 et supérieur à 32,5 soit 25 et 40
et aussi de trouver l'âge correspondant afin soit 3 ans et 4 ans afin
d'intéger le tout dans une formule pour faire une interpolation
Étape 3 La formule d'interpolation est : Age inférieure (3 ans) + ((((demi
somme (32,5)) - (valeur inférieur (25)))/(((valeur supérieur (40)) - (valeur
inférieur (25))))
Je voudrais donc intégrer cette méthode dans un fonction VBA