Re,
Entre toi qui te mélange les pinceaux dans les colonnes et moi qui me plante dans le code on ne pouvait pas y arriver ! Comme quoi, rien de mieux que le fichier qui va bien...
Le code modifié :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (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)
Set OS = Worksheets("mai") 'définit l'onglet source OS
Set OD = Worksheets("juin") 'définit l'onglet destination OD
DL = OD.Range("A1").End(xlDown).Row 'définit la dernière ligne DL du tableau
TV = OS.Range("A2:C" & DL) 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
If Not TV(I, 3) = "S" Then
ReDim Preserve TL(1 To 3, 1 To K) 'redimentionne le tableau des lignes (3 lignes (=> aux colonne A à C) , K colonnes)
For J = 1 To 3 'boucle 2 : sur 3 colonnes (équivalentes aux colonnes A à C)
TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la donnée en colonne J de TV (= Transposition)
Next J 'prochaine colonne de la boucle 2
K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
'si K est supérieure à 1 renvoie dans A1 redimensionnée de l'onglet OD, le tableau TL tgransposé
If K > 1 Then OD.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End Sub