Dim Lig As Long, derLig As Long
Dim Col As Long, derCol As Long
Dim LigAff As Long
' Effacer les données
Worksheets("Feuil2").Range("A2:C" & Cells.Rows.Count).ClearContents
With Worksheets("Feuil1")
' Dernière ligne
derLig = .Cells(Cells.Rows.Count, 1).End(xlUp).Row
If derLig < 4 Then derLig = 4
' Dernière colonne
derCol = .Cells(3, Cells.Columns.Count).End(xlToLeft).Column
If derCol < 3 Then derCol = 3
LigAff = 2
' Boucle sur chaque colonne
For Col = 3 To derCol
' Si la colonne contient des valeurs >0
If Application.WorksheetFunction.Sum(.Range(.Cells(4, Col), .Cells(derLig, Col))) > 0 Then
' Boucle sur chaque ligne
For Lig = 4 To derLig
If .Cells(Lig, Col).Value > 0 Then
Worksheets("Feuil2").Range("A" & LigAff).Value = .Cells(3, Col).Value
Worksheets("Feuil2").Range("B" & LigAff).Value = .Cells(Lig, 1).Value
Worksheets("Feuil2").Range("C" & LigAff).Value = .Cells(Lig, Col).Value
LigAff = LigAff + 1
End If
Next Lig
End If
Next Col
End With