Sub ACommander()
Dim plage As Range
Dim cDest As Range
Dim tbl() As Variant
Dim cpt As Integer
Dim lig As Long, col As Long
'
' Faire référence à ce classeur
With ThisWorkbook
'
' Détermination de la destination des données
With .Sheets("A COMMANDER")
Set cDest = .Range("A" & .Rows.Count).End(xlUp).Offset(1)
End With
'
' Détermination de la plage source des données
With .Sheets("S.C")
Set plage = .Range("A" & .Rows.Count).End(xlUp)
Set plage = .Range(.Range("A8"), plage).Resize(, 11)
End With
End With
'
'Numéros des colonnes de données
' Désignation 1,Référence 2, Conditionnement 3, Qté à commander 10, Observations 11
With plage
'
' Extraction des données
For lig = 1 To .Rows.Count
If .Cells(lig, 9).Text = "A COMMANDER" Then
cpt = cpt + 1
ReDim Preserve tbl(1 To 5, 1 To cpt)
tbl(1, cpt) = .Cells(lig, 1).Value
tbl(2, cpt) = .Cells(lig, 2).Value
tbl(3, cpt) = .Cells(lig, 3).Value
tbl(4, cpt) = .Cells(lig, 10).Value
tbl(5, cpt) = .Cells(lig, 11).Value
End If
Next
End With
'
' Transfert et tri des données dans la destination.
' Seules les nouvelles lignes seront triées.
With cDest.Resize(cpt, 5)
.Value = Application.Transpose(tbl)
.Sort Key1:=.Cells(1, 1), Header:=xlNo
End With
End Sub