bonsoir tout le monde,
je sollicite votre aide pour un problème avec une fonction personnalisée. Ma fonction demande quatre arguments:
- le cumul de km du mois précédent
- le cumul de km du mois en cours
- le nombre de chevaux du véhicule
- le nombre de km parcouru le mois en cours
le nombre de Cv est inclut dans une rechercheV de la fonction personnalisée pour obtenir les coûts correspondant au nombre de km. Mais la valeur renvoyé est #VALEUR. Alors que si dans le code je remplace Cv par 5 par exemple, la formule fonctionne. J'ai l'impression que l'argument Cv ne renvoi pas la valeur contenu dans la cellule pour la rechercheV. j'ai essayé en précisant "byval" ou "as integer" mais sans succès.
quelqu'un connaîtrais t-il l'origine de ce problème? Code mal écrit?
cordialement
je sollicite votre aide pour un problème avec une fonction personnalisée. Ma fonction demande quatre arguments:
- le cumul de km du mois précédent
- le cumul de km du mois en cours
- le nombre de chevaux du véhicule
- le nombre de km parcouru le mois en cours
le nombre de Cv est inclut dans une rechercheV de la fonction personnalisée pour obtenir les coûts correspondant au nombre de km. Mais la valeur renvoyé est #VALEUR. Alors que si dans le code je remplace Cv par 5 par exemple, la formule fonctionne. J'ai l'impression que l'argument Cv ne renvoi pas la valeur contenu dans la cellule pour la rechercheV. j'ai essayé en précisant "byval" ou "as integer" mais sans succès.
Code:
'Cp = cumul mois précédent
'Cec = cumul mois en cours
'Cv = Nombre de chevaux
'Nbkm = nombre de km parcouru dans le mois
Public Function CALCULKM(Cp, Cec, Cv, NbKm) As Single
Application.Volatile
Dim i As Single 'prix <5000
Dim j As Single 'prix >5000 <20 000
Dim k As Single 'prix >20 000
Dim l As Single 'régul palier 1
Dim m As Single 'régul palier 2
i = Evaluate("VLookup(Cv, base_km, 2, false)")
j = Evaluate("Vlookup(Cv, base_km, 4, false)")
k = Evaluate("Vlookup(Cv, base_km, 5, false)")
l = Evaluate("Vlookup(Cv, base_km, 8, false)")
m = Evaluate("Vlookup(Cv, base_km, 11, false)")
If Cp < 5000 And Cec <= 5000 Then CALCULKM = NbKm * i Else
If Cp <= 5000 And Cec > 5000 And Cec < 20000 Then CALCULKM = ((((Cec - 5000) * j) + ((5000 - Cp) * i)) + l) Else
If Cp > 5000 And Cp < 20000 And Cec > 5000 And Cec <= 20000 Then CALCULKM = NbKm * j Else
If Cp < 20000 And Cec > 20000 Then CALCULKM = ((((Cec - 20000) * k) + ((20000 - Cp) * j)) + m) Else
If Cp >= 20000 And Cec > 20000 Then CALCULKM = NbKm * k Else
End Function
quelqu'un connaîtrais t-il l'origine de ce problème? Code mal écrit?
cordialement