cibleo
XLDnaute Impliqué
Bonjour le forum,
En colonne B, au regard des dates figurant en colonne A doit être calculée une date selon les critères suivants :
Si la date se situe entre le 01 et 10 du mois, la date retenue sera la date au 10 du mois suivant.
Ex : A2 = 07.01.2012 -----> B2 = 10.02.2012
Si la date se situe entre le 11 et 20 du mois, la date retenue sera la date au 20 du mois suivant.
Ex : A2 = 13.03.2012 -----> B2 = 20.04.2012
Si la date se situe entre le 21 et le dernier jour du mois, la date retenue sera la date au dernier jour du mois suivant.
Ex : A2 = 31.01.2012 -----> B2 = 29.02.2012
Ex : A2 = 30.04.2012 -----> B2 = 31.05.2012
Ex : A2 = 21.09.2012 -----> B2 = 31.10.2012
Ex : A2 = 23.03.2012 -----> B2 = 30.04.2012
J'ai créé une fonction personnalisée avec 1 paramètre (la date prise en compte).
j'aimerais y ajouter 1 deuxième paramètre ---> le décalage en mois
Ex : je fixe le paramètre à 1
A2 = 21.07.2012 -----> B2 = 31.08.2012
Ex : je fixe le paramètre à 2
A2 = 21.07.2012 -----> B2 = 30.09.2012
Je vous envoie ce que j'ai réalisé en espérant pouvoir nettement l'améliorer.
Merci d'avance pour les solutions qui seront apportées.
Cibleo
En colonne B, au regard des dates figurant en colonne A doit être calculée une date selon les critères suivants :
Si la date se situe entre le 01 et 10 du mois, la date retenue sera la date au 10 du mois suivant.
Ex : A2 = 07.01.2012 -----> B2 = 10.02.2012
Si la date se situe entre le 11 et 20 du mois, la date retenue sera la date au 20 du mois suivant.
Ex : A2 = 13.03.2012 -----> B2 = 20.04.2012
Si la date se situe entre le 21 et le dernier jour du mois, la date retenue sera la date au dernier jour du mois suivant.
Ex : A2 = 31.01.2012 -----> B2 = 29.02.2012
Ex : A2 = 30.04.2012 -----> B2 = 31.05.2012
Ex : A2 = 21.09.2012 -----> B2 = 31.10.2012
Ex : A2 = 23.03.2012 -----> B2 = 30.04.2012
J'ai créé une fonction personnalisée avec 1 paramètre (la date prise en compte).
j'aimerais y ajouter 1 deuxième paramètre ---> le décalage en mois
Ex : je fixe le paramètre à 1
A2 = 21.07.2012 -----> B2 = 31.08.2012
Ex : je fixe le paramètre à 2
A2 = 21.07.2012 -----> B2 = 30.09.2012
Je vous envoie ce que j'ai réalisé en espérant pouvoir nettement l'améliorer.
VB:
Function DateButoir(d As Date)
Dim x As Date
x = d
finmois = WorksheetFunction.Min(DateSerial(Year(x), Month(x) + 1, 0), DateSerial(Year(x), Month(x) + 1, Day(x)))
finmois = CDate(finmois)
Select Case Day(x)
Case Is <= 10
Do Until Day(x) = 10
x = x + 1
Loop
DateButoir = WorksheetFunction.Min(DateSerial(Year(x), Month(x) + 1 + 1, 0), DateSerial(Year(x), Month(x) + 1, Day(x)))
Case Is <= 20
Do Until Day(x) = 20
x = x + 1
Loop
DateButoir = WorksheetFunction.Min(DateSerial(Year(x), Month(x) + 1 + 1, 0), DateSerial(Year(x), Month(x) + 1, Day(x)))
Case Is <= 31
Do Until Day(x) = Day(finmois)
x = x + 1
Loop
ladate = DateSerial(Year(x), Month(x) + 1, 1)
ladate = WorksheetFunction.Min(DateSerial(Year(ladate), Month(ladate) + 1 + 1, 0), DateSerial(Year(ladate), Month(ladate) + 1, Day(ladate))) - 1
DateButoir = ladate
End Select
End Function
Merci d'avance pour les solutions qui seront apportées.
Cibleo
Pièces jointes
Dernière édition: