Private Sub Worksheet_Activate()
Dim tablo, resu(), i&, j%, n&, k%
tablo = Sheets("Bons").[A1].CurrentRegion.Resize(, 10) 'à adapter
ReDim resu(1 To 3 * UBound(tablo), 1 To 8)
For i = 2 To UBound(tablo)
For j = 8 To 10
If Val(Replace(tablo(i, j), ",", ".")) Then
n = n + 1
For k = 1 To 7
resu(n, k) = tablo(i, k)
Next
resu(n, 8) = tablo(i, j)
End If
Next j, i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] 'à adapter
If n Then .Resize(n, 8) = resu
.Offset(n).Resize(Rows.Count - n - .Row + 1, 8).ClearContents 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub