Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

fonction excel et maitrise des dates

  • Initiateur de la discussion Initiateur de la discussion philppe27
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

philppe27

XLDnaute Occasionnel
Bonjour,

J'essaie de créer une fonction excel dans laquelle je dois manipuler des dates. Voici ma fonction:
Function DepreciationBV(PrixStock, DernEntree, CMJ, Stock, PrevCommande, Optional DateDepreciation)
Application.Volatile True

If DateDepreciation = "" Then DateDepreciation = Date

If Stock = 0 Or DernEntree > DateSerial(Year(DateDepreciation), Month(DateDepreciation) - 3, Day(DateDepreciation)) Then
DepreciationBV = 0
ElseIf PrevCommande >= Stock Or (CMJ * 20) > Stock Then
DepreciationBV = 0
ElseIf DernEntree < DateSerial(Year(DateDepreciation), Month(DateDepreciation) - 6, Day(DateDepreciation)) Then
DepreciationBV = (Stock - PrevCommande) * PrixStock
Else
DepreciationBV = (Stock - PrevCommande) * PrixStock * 0.5
End If

End Function

Le valeur de la cellule retournée est #VALEUR!, en approfondissant les lignes de code qui posent posent problèmes sont celle où il y a DateDepreciation, Date et DateSerial.

Merci de m'indiquer où se trouve le ou les problèmes.

Cordialement
 
Re : fonction excel et maitrise des dates

Bonjour


Code:
 Function DepreciationBV(PrixStock, DernEntree, CMJ, Stock, PrevCommande, Optional DateDepreciation)
    Application.Volatile True

Dim Ndate1 as date
Dim Ndate2 as date

Ndate1=DateSerial(Year(DateDepreciation), Month(DateDepreciation) - 3, Day(DateDepreciation)) 
    Ndate2=DateSerial(Year(DateDepreciation), Month(DateDepreciation) - 6, Day(DateDepreciation)) 

    If DateDepreciation = "" Then DateDepreciation = Date
    
    If Stock = 0 Or DernEntree > Ndate1 Then
        DepreciationBV = 0
    ElseIf PrevCommande >= Stock Or (CMJ * 20) > Stock Then
        DepreciationBV = 0
    ElseIf DernEntree < Ndate2 Then
        DepreciationBV = (Stock - PrevCommande) * PrixStock
    Else
        DepreciationBV = (Stock - PrevCommande) * PrixStock * 0.5
    End If
    
End Function
Faire un essai en écrivant le code de cette façon.
 
Dernière édition:
Re : fonction excel et maitrise des dates

Bonsoir,

Sans trop comprendre la formule, elle fonctionne tres bien pour les 3 premieres conditions mais je n'arrive pas à atteindre la condition Else qui calcule :
DepreciationBV = (Stock - PrevCommande) * PrixStock * 0.5

Les #VALEUR viennent peut etre de date incorrectes dans les cellules.
20/12/2007 au lieu de 12/20/2007 suivant les parametres regionnaux par exemple.

Il faudrait que tu attaches un fichier avec un exemple.
 
Re : fonction excel et maitrise des dates

Bonsoir,

C'est à cause de l'argument DateDepreciation qui est Optional.
Il faut lui donner une valeur par défaut.
Dans la description de fonction ecrire :

Function DepreciationBV(PrixStock, DernEntree, CMJ, Stock, PrevCommande, Optional DateDepreciation = "")

Ou bien renseigner tous les arguments de la fonction dans la feuille de calcul.
=DepreciationBV1(B1;B2;B3;B4;B5;B6)
ou
=DepreciationBV(C1;C2;C3;C4;C5;"")
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
910
Réponses
3
Affichages
430
Réponses
35
Affichages
2 K
  • Suggestion Suggestion
Date et heure EcartDate
Réponses
32
Affichages
5 K
Réponses
30
Affichages
4 K
A
Réponses
25
Affichages
4 K
A
V
Réponses
17
Affichages
3 K
VBgalère
V
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…