oracle7
XLDnaute Nouveau
Bonsoir à tous,
Voilà mon problème :
J'ai développé un fonction personnelle qui utilise la loi de poisson pour faire un calcul de nombre de pièces de rechanges.
Ma fonction effectue des itérations successives jusqu'à ce que le calcul par loi de poisson respecte une condition donnée (passée en 4e paramètre).
Autant à la première itération le calcul s'effectue bien autant pour toutes les itérations suivantes je récupère le message d'erreur #VALEUR!.
Pouvez-vous SVP m'aider à comprendre quelle est mon erreur ?
Merci d'avance pour vos réponses.
Cordialement
oracle7556
PS : Pour aider à comprendre ce qui ce passe voici une copie d'écran et le code VBA de ma fonction :
Voilà mon problème :
J'ai développé un fonction personnelle qui utilise la loi de poisson pour faire un calcul de nombre de pièces de rechanges.
Ma fonction effectue des itérations successives jusqu'à ce que le calcul par loi de poisson respecte une condition donnée (passée en 4e paramètre).
Autant à la première itération le calcul s'effectue bien autant pour toutes les itérations suivantes je récupère le message d'erreur #VALEUR!.
Pouvez-vous SVP m'aider à comprendre quelle est mon erreur ?
Merci d'avance pour vos réponses.
Cordialement
oracle7556
PS : Pour aider à comprendre ce qui ce passe voici une copie d'écran et le code VBA de ma fonction :
Code:
Public Function F_Calcul_NbRechanges(pi_NbMateriel As Integer, pi_Aor As Integer, _
pd_lambda As Double, pd_Pnrs As Double) As Integer
'=======================================================================================
' Fonction : F_Calcul_NbRechanges
' Objet : Calculer le nombre de rechanges nécessaires pour maintenir un ensemble _
d'équipements tout en respectant une PNRS donnée.
' Crée le : 05/05/2010 par JCR
' Description : On utilise la loi de poisson pour déterminer par itérations successives _
le nombre de rechanges adéquats
' Arguments : pi_NbMateriel IN = Nombre d'équipements pris en compte _
pi_Aor IN = Temps de fonctionnement opérationnel annuel des équipements _
pd_Lambda IN = Mid Time Between Failure de l'équipement _
pd_Pnrs IN = Probabilité de Non Rupture de Stock à respecter
' Valeur retour : Nombre de Rechanges calculé
'=======================================================================================
' Utilisation : vi_NbRechanges = F_Calcul_NbRechanges(pi_NbMateriel,pi_Aor,pd_Lambda,pd_Pnrs)
'==============================Historique des modifications=============================
' Date Indice Auteur Sujet
' 05/05/2010 A00 JCR Création
'
'---------------------------------------------------------------------------------------
' Déclarations Publiques / Privées
'---------------------------------------------------------------------------------------
Dim vb_Test As Boolean ' Indicateur de sortie de boucle
Dim vd_NbRechanges As Double ' Nombre de rechanges calculé
Dim vd_NbPannes As Double ' Nombre de pannes attendues
Dim vd_LoiPoisson As Double ' Résultat de l'application de la loi de poisson
'---------------------------------------------------------------------------------------
' Initialisations
'---------------------------------------------------------------------------------------
vd_NbRechanges = 0
vb_Test = False
'---------------------------------------------------------------------------------------
' Implémentation
'---------------------------------------------------------------------------------------
' On calcule de nombre de pannes attendues
vd_NbPannes = pi_NbMateriel * pi_Aor * pd_lambda
Do
' On applique la loi de poisson pour chaque évenement
vd_LoiPoisson = WorksheetFunction.Poisson(vd_NbRechanges, vd_NbPannes, True)
' On vérifie que le calcul respecte la PNRS imposée
If vd_LoiPoisson > pd_Pnrs Then
' OUI : Fin du calcul
vb_Test = True
Else
' NON : on passe à l'évenement suivant
vd_NbRechanges = vd_NbRechanges + 1
End If
Loop Until vb_Test
' On renvoie le Nb de rechanges calculé
F_Calcul_NbRechanges = CInt(vd_NbRechanges)
End Function