Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Colonne As Integer
Dim Adresse As String
'On sort si plus d'une cellule a été modifiée
2 If Target.Count > 1 Then Exit Sub
'On sort si la cellule modifiée est vide
If Target.Value = "" Then Exit Sub
'Définit la colonne à vérifier (1=Colonne A, 2=colonne B ...etc...)
Colonne = 1
'Vérifie si c'est la colonne cible a été modifiée
If Target.Column = Colonne Then
'Recherche si la nouvelle donnée existe déjà dans la colonne.
Adresse = Columns(Colonne).Find(What:=Target.Value, After:=Target.Offset(1, 0), LookAt:=xlWhole, SearchDirection:=xlNext).Address
'Si l'adresse de cellule trouvée ne correspond pas à la cellule modifiée, cela
'signifie qu'il y a un doublon dans la colonne.
If Adresse <> Target.Address Then
MsgBox "La donnée '" & Target & "' existe déjà dans la cellule " & Adresse
'Suppression de la donnée
Target.Value = ""
Target.Select
End If
End If
'Pour mettre le format 000/ année en cours dans la colonne A
'--contrôle des valeurs numériques entrées en colonne A--
Set Target = Intersect(Target, [A:A], Me.UsedRange)
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Target In Target 'si entrées multiples
If IsNumeric(Target.Text) Then _
Target = Format(Target.Text, "000") & " \ " & Year(Date)
Next
Application.EnableEvents = True
End Sub