Private Sub Worksheet_Change(ByVal Target As Range)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim r As Range 'dérclare la variable r (Recherche)
If Target.Column <> 1 Then Exit Sub 'si la cellule éditée se trouve ailleurs que dans la colonne 1 (=A), sort de la procédure (à adapter à ton cas)
If Target.Value = "" Or Selection.Cells.Count > 1 Then Exit Sub 'si la cellule est effacée ou si plusieurs cellules sélectionnées, sort de la procédure
If Target.Value > 999999 Or Target.Value < 100000 Then 'condition : si la cellule n'est pas comprise entre 100000 et 999999
MsgBox "La valeur doit être comprise entre 100000 et 999999 ! " 'message
Target.ClearContents 'efface la cellule
Target.Select 'sélectionne la cellule
End If 'fin de la condition
pa = Target.Address 'définit la première adresse pa
Set r = Columns(1).Find(Target.Value, Target, xlValues, xlWhole) 'de'finit la recherche r
If Not r Is Nothing And r.Address <> pa Then 'si il existe d'autres occurrences ailleurs qu'en pa
MsgBox "Valeur existante en " & r.Address(0, 0) & " !" 'message
Target.ClearContents 'efface la cellule
Target.Select 'sélectionne la cellule
End If 'fin de la condition
End Sub