Sub Transferer()
Dim i As Integer
Dim j As Integer
Dim Ind As Integer
Dim NbLig As Integer
Dim Trouvé As Boolean
Dim LigDest As Integer
Dim RefDev As String
Dim TSCommande As ListObject
Dim TSMaj As ListObject
Dim TabCommande() As Variant
Dim TabMaj() As Variant
Dim start As Single
start = Timer
Set TSCommande = Sheets("Commande").ListObjects("TbCommande")
Set TSMaj = Sheets("MAJ").ListObjects("TbMaj")
With TSCommande
TabCommande = .ListColumns(1).Range.Resize(, 10).Value
End With
With TSMaj
TabMaj = Application.WorksheetFunction.Transpose(.ListColumns(1).Range.Resize(, 10).Value)
End With
NbLig = 0
For i = LBound(TabCommande, 1) + 1 To UBound(TabCommande, 1)
RefDev = TabCommande(i, 1)
Trouvé = False
For Ind = LBound(TabMaj, 2) + 1 To UBound(TabMaj, 2)
If TabMaj(1, Ind) = RefDev Then
LigDest = Ind
Trouvé = True
Exit For
End If
Next Ind
If Not Trouvé Then
NbLig = NbLig + 1
ReDim Preserve TabMaj(1 To 10, 1 To NbLig + 1)
LigDest = NbLig
End If
For j = 1 To 10
TabMaj(j, LigDest) = TabCommande(i, j)
Next j
Next i
With TSMaj
.DataBodyRange(1, 1).Resize(UBound(TabMaj, 2), UBound(TabMaj, 1)) = Application.WorksheetFunction.Transpose(TabMaj)
End With
MsgBox "durée du traitement: " & Timer - start & " secondes"
End Sub