Bonjour Daniel, Dan, Gérard, Dugenou, Hervé, Philippe, le forum
Je prends le train en marche et propose une petite variation sur le thème.
Cordialement, A+
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = '' Or Target.Row > 50 Then Exit Sub ' on ne teste que si target >'' et appartient à la plage testée
Dim Cel_Test As Range
For Each Cel_Test In ActiveSheet.Range('A1').Offset(0, Target.Column - 1).Range('A1:A50').SpecialCells(xlCellTypeConstants, 23) ' teste chaque cellule non vide de la ligne 1 à 50 de la colonne de la cellule en cours
If Not (Cel_Test.Address = Target.Address) And Cel_Test.Value = Target.Value Then ' exécute si la cellule testée n'a pas l'adresse de target mais a la même valeur
MsgBox 'La valeur entrée en ' & Target.Address(RowAbsolute:=False, Columnabsolute:=False) & ' existe déja en ' & Cel_Test.Address(RowAbsolute:=False, Columnabsolute:=False), vbInformation
'Target.Value = '' 'à valider si on désire interdire les doublons
Target.Select 'sélectionne target si la condition est vérifiée
End If
Next Cel_Test
End Sub