RE :
Oui, dans l'état actuel du code c'est normal : Target désigne, pour l'événement Change de la feuille, la cellule qui vient d'être modifiée.
De ce fait, ça ne peut pas fonctionner dans ce cas. Je pense donc qu'il te faut modifier le code comme ceci :
(suppression de la condition If...Then)
Sub MacroDeplacee()
Dim Ws As Worksheet
Dim DerLig As Long
Dim PlageTotal As Range, PlageDonnées As Range, C As Range
Dim Col As Integer
With Worksheets("Feuil1")
DerLig = .Range("AG" & Rows.Count).End(xlUp).Row
Set PlageTotal = .Range("AG3:AG" & DerLig)
Set PlageDonnées = .Range("B3:AF" & DerLig)
Set Ws = Worksheets("Feuil2")
Col = 2
Application.ScreenUpdating = False
Ws.Range("B5:K36").ClearContents
For Each C In PlageTotal
If C > 0 Then
Ws.Cells(5, Col) = .Cells(C.Row, 1)
Ws.Range(Ws.Cells(6, Col), Ws.Cells(36, Col)) = Application.Transpose(.Range(.Cells(C.Row, 2), .Cells(C.Row, 32)))
Col = Col + 1
End If
Next C
Application.ScreenUpdating = True
End If
Set PlageTotal = Nothing: Set PlageDonnées = Nothing: Set Ws = Nothing
End With
End Sub
Cordialement.