Sub Macro2()
Dim tos(2) As Object 'déclare le tableau de deux variables to (Tableau des OngletS)
Dim pad As Range 'déclare la variable pad (Plage Anciennes Données)
Dim i As Byte 'déclare la variable i (Incrément)
Dim dl As Integer 'déclare la variable dl
Dim pl As Range 'déclare la variable pl
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pli As Range 'déclare la variable pli (Plage de LIgne)
Dim dest As Range 'déclare la variable dest (cellulke de DESTination)
Set tos(0) = Sheets("VB01") 'définit la variable 0 du tableau tos
Set tos(1) = Sheets("HD01") 'définit la variable 1 du tableau tos
Set tos(2) = Sheets("Récup") 'définit la variabe 2 du tableau tos (tu adapteras à ton cas)
'effacement des anciennes données
If tos(2).Range("A2").Value <> "" Then 'condition : si la cellule A2 de l'onglet "Récup" n'est pas vide
Set pad = tos(2).Range("A1").CurrentRegion 'définit la plage pad des anciennes données
Set pad = pad.Offset(1, 0).Resize(pad.Rows.Count - 1, pad.Columns.Count) 'redoefinit la plage pad (sans la première ligne)
pad.Clear 'supprime tout dans la plage pad
End If 'fin de la condition
'récupérations des nouvelles données
For i = 0 To 1 'boucle 1 : sur les deux premiers onglets
With tos(i) 'prend en compte l'onglet de la boucle
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A (=1) de l'onglet BV01
Set pl = .Range("A2:A" & dl) 'définit la plage pl
For Each cel In pl 'boucle 2 : sur toutes les cellules cel de la plage pl
Set pli = Application.Union(cel, cel.Offset(0, 1), cel.Offset(0, 3), cel.Offset(0, 5))
Set dest = tos(2).Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
pli.Copy dest
Next cel
End With
Next i
End Sub