re,
je l'ai modifié en fonction personnalisée, alors vous appelez cette fonction avec 4 paramètres, les 2 dates, le nombre de jours ou mois comme intervalle et TRUE (en cas de mois) ou False (en cas de jours).
La macro "teste" est un exemple comment on peut utiliser cette fonction.
Dans votre macro, vous avez par exemple 2 dates, la cellule G7 (1/7/2023) et E10 (5/8/23) et F10 (bi-hebdomadaire=14j), alors votre date sera le résultat de
madate=datemultiple(range("G7").value, range("E10").value, 14, false)
[s=fs-1.1][s=co-8064a2][/s][/s]
Sub Teste()
Dim MaDate
MaDate = DateMultiple(Date, DateSerial(2023, 8, 1), 3, True) 'première date >= aujourd'hui et 1/8/23 qui est un multiple de 3 mois
MsgBox Format(MaDate, "dd-mm-yy")
End Sub
Function DateMultiple(MaDate As Date, DateRef As Date, nombre As Integer, bMois As Boolean)
'******************************************************************************************
'MaDate = à partir de cette date on cherche un multiple en jours ou en mois qui est plus grand que MaDate et DateRef
'bMois = Vrai si on cherche un multiple en mois, = false sie on cherche en jours
'******************************************************************************************
Dim dMin, Dmax, x
dMin = Application.Min(MaDate, DateRef)
Dmax = Application.Max(MaDate, DateRef)
If Not bMois Then
x = WorksheetFunction.Ceiling_Math(DateDiff("d", dMin, Dmax), nombre)
DateMultiple = DateAdd("d", x, dMin)
Else
x = WorksheetFunction.Ceiling_Math(DateDiff("m", dMin, Dmax), nombre)
DateMultiple = DateAdd("m", x, dMin)
End If
End Function