Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim TE As ListObject 'déclare la variable TE (Tableau structuré Exemple)
Dim OB As Worksheet 'déclare la variable OB (Onglet Exemple)
Dim TB As ListObject 'déclare la variable TB Tableau structuré Base)
Dim BE As String 'déclare la variable BE (Boîte d'Endrée)
Set TE = Me.ListObjects(1) 'définit la tableau structuré TE
'si le changement a lieu ailleurs que dans la colonne 1 du tableau strucrturé TE, sort de la procédure
If Application.Intersect(Target, TE.ListColumns(1).Range) Is Nothing Then Exit Sub
If Application.WorksheetFunction.IsNA(Target.Offset(0, 1).Value) Then 'condition : si la cellule en colonne 2 renvoie l'erreur "NA#"
Set OB = Worksheets("Base") 'définit l'onglet OB
Set TB = OB.ListObjects(1) 'définit le tableau structuré TB
TB.ListRows.Add 'ajoute une ligne au tableau structuré TB
TB.DataBodyRange(TB.ListRows.Count, 1) = Target.Value 'récupère la référence produit dans la colonne 1 de TB
BE = InputBox("taper le libellé de la nouvelle référence.") 'définit la boîte d'entrée BE
TB.DataBodyRange(TB.ListRows.Count, 2) = BE 'renvoie BE dans la colonne 2 de TB
End If 'fin de la condition
End Sub