Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, i&, x, y, z, t, f$, tablo, j&
Set r = Intersect(Target, Range("E3:N" & Rows.Count), Me.UsedRange)
If r Is Nothing Then Exit Sub
For Each r In r 'si entrées multiples
If r <> "" Then
i = r.Row
x = Cells(i, 2): y = Cells(i, 3): z = Cells(i, 4)
If x = "" Or y = "" Or z = "" Then r.Value = "": GoTo 1
t = x & y & z
f = Trim(Cells(2, r.Column))
With Sheets(f)
tablo = Intersect(.Range("B2:D" & .Rows.Count), .UsedRange)
For j = 2 To UBound(tablo)
If tablo(j, 1) & tablo(j, 2) & tablo(j, 3) = t Then _
MsgBox "La ligne " & i & " est déjà en feuille '" & f & "' !", 48: GoTo 1
Next
.Cells(.Rows.Count, 2).End(xlUp)(2).Resize(, 3) = Cells(i, 2).Resize(, 3).Value
End With
End If
1 Next
End Sub