Hello forum !
Je voulais savoir s'il était possible de faire de la récursivité dans une fonction personalisée (en vba) ? J'ai essayé, il ne me met pas d'erreur de compil mais malheureusement je n'ai pas le résultat escompté.
Voici le code, si jamais vous voyez une erreur
C'est une fonction qui doit afficher une date en fonction de la précédente (incrémentalement) et le faire sur une série de colonnes à la suite. Sachant que les weekend doivent être sautés, ainsi que les jours fériés (donnés dans le Range DaysOff). La récursivité sert à revérifier si ce n'est pas un weekend qui arrive, lorsque la date calculée est un jour férié (en comptant aussi qu'il peut y avoir des jours de repos qui se suivent). Le firstdate est juste la toute première date rentrée, toutes les autres sont calculées ensuite en fonction de celle-ci.
Désolé encore pour mon faible niveau en prog vba
Merci !
Je voulais savoir s'il était possible de faire de la récursivité dans une fonction personalisée (en vba) ? J'ai essayé, il ne me met pas d'erreur de compil mais malheureusement je n'ai pas le résultat escompté.
Voici le code, si jamais vous voyez une erreur
Code:
Function CalcDate(FirstDate As Range, ByVal PreviousCell As Range, DaysOff As Range) As Variant
Dim res As Variant
If IsDate(FirstDate) = True Then
If Weekday(PreviousCell, vbMonday) = 5 Then
res = PreviousCell + 3
Else
res = PreviousCell + 1
End If
For Each cell In DaysOff
If cell = res Then
res = CalcDate(FirstDate, res, DaysOff)
End If
Next cell
CalcDate = res
Else
CalcDate = "Enter the first date"
End If
End Function
C'est une fonction qui doit afficher une date en fonction de la précédente (incrémentalement) et le faire sur une série de colonnes à la suite. Sachant que les weekend doivent être sautés, ainsi que les jours fériés (donnés dans le Range DaysOff). La récursivité sert à revérifier si ce n'est pas un weekend qui arrive, lorsque la date calculée est un jour férié (en comptant aussi qu'il peut y avoir des jours de repos qui se suivent). Le firstdate est juste la toute première date rentrée, toutes les autres sont calculées ensuite en fonction de celle-ci.
Désolé encore pour mon faible niveau en prog vba
Merci !