Sub TEST()
Dim F1 As Worksheet 'déclare la variable F1 (Feuil1)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des lignes)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set F1 = Sheets("Feuil1") 'définit l'onglet F1
TV = F1.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
ReDim Preserve TL(1 To 2, 1 To K) 'redimensionne le tableau des lignes TL (2 lignes, K colonnes)
TL(1, K) = IIf(TV(2, 2) = "", "PLEIN TT", "DEMI TT") 'définit la valeur de la donnée ligne 1 colonne K de TL en fonction de la donnée ligne 2 colonne 2 de TV
TL(2, K) = "du " & TV(2, 1) & " au " 'définit la valeur de la donnée ligne 2 colonne K de TL en fonction de la date ligne 2 colonne 1 de TV
For I = 2 To UBound(TV, 1) - 1 'boucle sur toutes les lignes I de TV (en partant de la seconde)
If TV(I, 2) <> TV(I + 1, 2) Then 'condition : si la donnée ligne I colonne 2 de TV est différente de la donnée ligne I+1 colonne 2 de TV
TL(2, K) = TL(2, K) & TV(I, 1) 'rajoute la date de fin (après le "au ")
K = K + 1 'incrémente K (ajoute une colonne au tableau ds lignes TL)
ReDim Preserve TL(1 To 2, 1 To K) 'redimensionne le tableau des lignes TL (2 lignes, K colonnes)
TL(1, K) = IIf(TV(I + 1, 2) = "", "PLEIN TT", "DEMI TT") 'définit la valeur de la donnée ligne 1 colonne K de TL en fonction de la donnée ligne I+1 colonne 2 de TV
TL(2, K) = "du " & TV(I + 1, 1) & " au " 'définit la valeur de la donnée ligne 2 colonne K de TL en fonction de la de la date ligne I+1 colonne 1 de TV
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
TL(2, UBound(TL, 2)) = Split(TL(2, UBound(TL, 2)), " au ")(0) & " au " & TV(UBound(TV, 1), 1) 'rajoute la dernière date de fin à la dernière donnée du tableau TL
Set DEST = F1.Range("D2") 'définit la cellule de destination DEST
DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie dans DEST le tableau TL transposé
End Sub