Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If IsError(Target.Validation.Type) Or Target.Count > 1 Or IsEmpty(Target(1)) Then Exit Sub
Dim memo$, mess As Byte
Application.EnableEvents = False 'désactive les évènements
memo = CStr(Target) 'mémorise l'entrée
Application.Undo 'annule l'entrée
If Not IsEmpty(Target) Then Beep: mess = MsgBox("Voulez-vous concaténet '" & memo & "' ?", vbYesNo + vbQuestion, "Concaténation")
If mess = vbYes Then Target = CStr(Target) & "-" & memo Else Application.Undo
Application.EnableEvents = True 'réactive les...