Sub recopier()
Dim col As Integer, lig As Integer
Dim a As Integer, b As Integer, c As Integer, i As Integer, j As Byte, k As Byte
Dim positionjour As Integer
Dim jour(1 To 7) As String
jour(1) = "LUNDI"
jour(2) = "MARDI"
jour(3) = "MERCREDI"
jour(4) = "JEUDI"
jour(5) = "VENDREDI"
jour(6) = "SAMEDI"
jour(7) = "DIMANCHE"
'NETTOYAGE
For j = 0 To 6 '7 jours
For k = 0 To 5 '6 feuilles par jour
Sheets("Planning").Range("C" & 14 + (k * 30) + (j * 186) & ":D" & 38 + (k * 30) + (j * 186)).ClearContents
Next k
Next j
'ITERATION SUR LES COLONNES du tableau PDS!B4:H16
For col = 2 To 8
'INITIALISATION A CHAQUE CHANGEMENT DE COLONNE
'valeur de la dernière itération du jour en cours (remise à zéro puisque chgt de colonne = chgt de jour)
b = 0
'n° de la ligne du haut du tableau du jour en cours
positionjour = Worksheets("Planning").Range("B:B").Find(jour(col - 1)).Row
'ITERATION SUR LES LIGNES du tableau PDS!B4:H16 pour parcourir toutes les valeurs du jour en cours
For lig = 4 To 16
c = Sheets("PDS").Cells(lig, col) 'nombre de lignes à coller lu dans le tableau PDS!A4:A16
a = b + 1 'valeur de la 1ère itération = dernière itération du groupe précédent + 1
b = c + b 'valeur de la dernière itération = dernière itération du groupe précédent + nbre de lignes à coller
For i = a To b
'Positionjour pour être en haut du tableau du jour concerné
'+ 2 pour se positionner au bon endroit
'+ i pour se décaller vers le bas au fur et à mesure, en fonction du nbre de lignes à coller
'+ 5 * Int((i - 0.1) / 25)) pour passer d'une feuille à la suivante, toutes les 25 itérations, c-à-d pour sauter 5 lignes
'Left... pour ne garder que la partie gauche de la période lue dans PDS!A4:A16
'Right... pour ne garder que la partie droite de la période lue dans PDS!A4:A16
Sheets("Planning").Range("C" & positionjour + 2 + i + 5 * Int((i - 0.1) / 25)) = Left(Sheets("PDS").Range("A" & lig), InStr(Sheets("PDS").Range("A" & lig), "-"))
Sheets("Planning").Range("D" & positionjour + 2 + i + 5 * Int((i - 0.1) / 25)) = Right(Sheets("PDS").Range("A" & lig), Len(Sheets("PDS").Range("A" & lig)) - InStr(Sheets("PDS").Range("A" & lig), "-"))
Next i
Next lig
Next col
End Sub