Loi de poisson et #VALEUR!

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 ? :confused:

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
 

ROGER2327

XLDnaute Barbatruc
Re : Loi de poisson et #VALEUR!

Re...
RE,



Je pense qu'avant d'affecter le résultat à la variable a, VBA entre le résultat dans un espace (mémoire) tampon dont la dimension correspond au type le plus précis des variables b et c.

Il y a bug si cet espace est insuffisant.

A+
D'accord, job75 ! En disant cela, vous précisez techniquement ce que je disais moins rigoureusement : "...détectant deux entiers courts, il évalue le produit comme devant être un entier court...".​
Cordialement,
ROGER2327
#3434


18 Floréal An CCXVIII
2010-W18-5T01:10:55Z
 

job75

XLDnaute Barbatruc
Re : Loi de poisson et #VALEUR!

Bonjour Roger, le fil, le forum,

Dans le même ordre d'idée, un exemple intéressant (pour l'addition) :

Code:
Dim i As Integer [COLOR="Red"]'bug si [U]As Byte[/U][/COLOR]
For i = 10 To 2 Step -1
Next

En effet à chaque boucle s'effectue l'opération :

Code:
i = i + (-1)

(-1) est du type Integer, la somme l'est aussi.

A+