Sub macro2()
Dim TabData() As Variant
Dim TabFinal() As Variant
Dim Tab1() As Variant
Dim Tab2() As Variant
With Sheets("BDD")
    Nbl = .Range("B" & .Rows.Count).End(xlUp).Row - 3
    TabData = .Range("B4:E" & Nbl + 3).Value
    ReDim TabFinal(1 To 2 * Nbl, 1 To 4)
End With
With Sheets("Tableaux")
    .Range("Tableau1").ClearContents
    .Range("Tableau2").ClearContents
   
    Tab1 = .Range("Tableau1").Value
    Tab2 = .Range("Tableau2").Value
End With
For i = LBound(TabData, 1) To UBound(TabData, 1)
    'MsgBox UBound(TabFinal, 1)
    TabFinal(i, 1) = TabData(i, 1)
   
    TabFinal(i + Nbl, 1) = TabData(i, 4)
    TabFinal(i, 4) = TabData(i, 2)
    TabFinal(i + Nbl, 4) = TabData(i, 3)
Next i
For i = LBound(TabFinal, 1) To UBound(TabFinal, 1)
    If i <= 15 Then
        For j = 1 To 4
            Tab1(i, j) = TabFinal(i, j)
        Next j
    Else
        For j = 1 To 4
            Tab2(i - 15, j) = TabFinal(i, j)
        Next j
    End If
Next i
With Sheets("Tableaux")
    .Range("Tableau1") = Tab1
    .Range("Tableau2") = Tab2
End With
End Sub