Je fais un essai avec cette fonction personnalisée :
VB:
Function MaDate(Nbjours#, Optional Date_Depart As Date) As String
Dim fecha As Date
fecha = IIf(IsMissing(Date_Depart), Date, Date_Depart)
MaDate = DateAdd("d", Nbjours, fecha)
End Function
qui renvoie une date qui correspond à une date définie en paramétrage + un nombre de jours lui aussi défini en paramétrage.
Si l'on omet dans le paramétrage la date, alors ce sera la date du jour qui s'imposera. Quand on fait un essai en mettant une date dans le paramétrage, ça marche. En revanche, si l'on omet de mettre la date, alors le résultat est inattendu ; j'ai l'impression que la date de départ est le 31/12/1899. C'est bizarre.
Où me suis-je encore planté ?
pour l'explication, si tu veux utiliser IsMissing() la variable optionnelle doit être Variant.
VB:
Function MaDate(Nbjours#, Optional Date_Depart) As String
Dim fecha As Date
fecha = IIf(IsMissing(Date_Depart), Date, Date_Depart)
MaDate = DateAdd("d", Nbjours, fecha)
End Function
fonctionne correctement, IsMissing retourne bien True.
C'est voulu As String au lieu de As Date pour la fonction ?
eric
Merci pour cet éclaircissement. Il fallait tout simplement déclarer la variable optionnelle comme Variant. Pfff... je me disais aussi !
Quant au String en fin de fonction plutôt que Date. En fait, la fonction définitive renvoie une date sous forme de années:mois:heures:minutes:secondes. Mais hors ce contexte, Date ferait en effet mieux l'affaire.