Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
Dim DR As Long 'déclare la variable DR (Date de référence)
Dim DT As Long 'déclare la variable DT (Date du Tableau)
Dim I As Integer 'déclare la variable I (Incrément)
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("B1").CurrentRegion 'définit le tableau des valeurs TV
O.Range("C2:C" & Application.Rows.Count).ClearContents 'efface les donnée de la colonne C (à partie de C2)
O.Range("E2:F2").ClearContents 'efface le contenu de la plage D2:E2
ici: 'étiquette
BE = Application.InputBox("Taper la date au format jj/mm/aaaa", "Date de Référence", Type:=2) 'définit la boîte d'entrée BE
If BE = False Then Exit Sub 'si bouton [Annuler] sort de la procédure
If IsDate(BE) = False Then 'condition : si BE n'est pas une date
MsgBox "Date non valide !" 'message
GoTo ici 'va à l'étiquette "ici"
End If 'fin de la condition
DR = CLng(DateSerial(Year(BE), Month(BE), Day(BE))) 'définit la date de référence DR (en entier long)
O.Range("E2") = Format(DR, "dd/mm/yyyy") 'renvoie la date de référence en D2
O.Range("F2") = Format(DR - 21, "dd/mm/yyyy") 'renvoie la date de référence emoins 21 jours en E2
For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs TV (en partant de la seconde)
Select Case TV(I, 1) 'agit en fonction de la donnée ligne I colonne 1 de TV
Case ">1 year" 'cas ">1 year"
O.Cells(I, "C") = ">1 year" 'renvoie la valeur dans la cellule en colonne C
Case Else 'tous les autres cas
DT = CLng(DateSerial(Year(TV(I, 1)), Month(TV(I, 1)), Day((TV(I, 1))))) 'définit la date du tableau DT (en entier long)
If DT <= DR - 21 Then O.Cells(I, "C") = Format(DT, "dd/mm/yyyy") 'si la date du tableu DT est inférieure ou égale à la date de référende moisn 21 jours, renvoie la date DR au format jj/mm/aaaa dans la colonne C
End Select 'fin de l'action en fonction de la donnée ligne I colonne 1 de TV
Next I 'prochaine ligne de la boucle
End Sub