Bonsoir Nonno, bonsoir le forum,
Peut-être comme ça :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TSS As ListObject 'déclare la variable TSS (Tableau Structuré Source)
Dim PLS As Range 'déclare la variable PLS (PLage Source)
Dim TSD As ListObject 'déclare la variable TSD (Tableau Structuré Destination)
Dim PLD As Range 'déclare la variable PLD (PLage Destination)
Dim LI As Integer 'déclare la variable LI (LIgne)
If Target.Address = "$B$4" Then 'condition : si le changement a lieu dans la cellue B4
Set TSS = Me.ListObjects("tableau6") 'définit le tableau structuré source TSS
Set PLS = TSS.DataBodyRange 'définit la plage PLS
Set TSD = Worksheets("Archivage").ListObjects("Tableau1") 'définit le tableau structuré destination TSD
Set PLD = TSD.DataBodyRange 'définit la plage destination PLD
LI = Target.Offset(1, 0).Value - TSS.HeaderRowRange.Row 'définit la ligne LI (dans le tableau structuré TSS)
If TSD.ListRows.Count = 0 Then TSD.ListRows.Add 'si le tableau structuré destination n'a aucune ligne, ajoute une ligne
Set PLD = TSD.DataBodyRange 'définit la plage PLD
PLS.Rows(LI).Copy PLD.Cells(1, 1) 'copie la ligne LI de la plage source PLS et la colle dans la première cellule de la plage PLD
TSD.ListRows.Add (1) 'ajoute une ligne en premier dans le tableau structuré destination TSD
End If 'fin de la condition
End Sub