Option Explicit
Option Base 1
Sub test()
'on declare les variables
Dim TbS() As Variant
Dim TbR() As Variant
Dim L As Byte
Dim x As Byte
'on initialise la variable
x = 1
With Worksheets("DONNEES") ' à partir de cette feuille
TbS = .Range("B3:F8").Value 'on remplie un tableau des donnees de la plage ainsi definie pour l'exemple
For L = 1 To UBound(TbS, 1) 'pour chaque ligne de ce tableau
If TbS(L, 5) <> 0 Then 'si la colonne 5 de ce tableau n'est pas egale à 0
ReDim Preserve TbR(UBound(TbS, 2), x) 'on redimenssionne le tableau du Résultat TbR
TbR(1, x) = TbS(L, 1) 'et on colle la donnee correspondant à la premiere colonne
TbR(2, x) = TbS(L, 2) 'etc
TbR(3, x) = TbS(L, 3) 'etc
TbR(4, x) = TbS(L, 4)
TbR(5, x) = TbS(L, 5)
x = x + 1 'on incremente
End If 'fin de condition
Next L 'autre ligne du tableau Source TbS
End With
With Worksheets("COMPILE") 'avec cette feuille
'ci dessous on colle les donnees recueillies en Colonne en l'inversant
.Range("B3").Resize(UBound(TbR, 2), UBound(TbR, 1)) = Application.Transpose(TbR)
End With
End Sub