Option Explicit
Dim flag1 As Boolean ' Déclaration de flag1
Private Sub Worksheet_Change(ByVal Target As Range)
If flag1 Or ListObjects.Count = 0 Then Exit Sub
flag1 = True 'pour bloquer la macro
Dim br As Range, r As Range, P As Range
Set br = ListObjects(1).DataBodyRange
'---Décale les moyennes en fonction de la ligne EFFECTIF---
If br.Rows(br.Rows.Count).Row + 1 = [EFFECTIF].Row Then
[EFFECTIF].EntireRow.Insert
[EFFECTIF].EntireRow(0).Clear 'efface la ligne précédente
End If
'---Efface les doublons dans la colonne A---
Set P = Intersect(Target, br.Columns(1))
If Not P Is Nothing Then
For Each r In P
If Application.CountIf(br.Columns(1).Offset(1), r) > 1 Then
r.Select
MsgBox "Doublon !", vbExclamation
r.ClearContents
End If
Next
End If
'---Suppression des lignes des noms effacés dans la colonne A---
On Error Resume Next
br.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
flag1 = False
End Sub