Fonction différence champ discontinu

Dans chaque menu données/Validation, un nom ne peut être choisi qu'une fois.

Function Diff(champ As Range, champ2 As String)
  Application.Volatile
  Dim temp()
  ReDim temp(1 To champ.Count)
  j = 1
  For i = 1 To champ.Count
     témoin = False
       For m = 1 To Range(champ2).Areas.Count
          For n = 1 To Range(champ2).Areas(m).Count
            If champ(i) = Range(champ2).Areas(m)(n) Then témoin = True
          Next n
       Next m
       If Not témoin Then
          temp(j) = champ(i): j = j + 1
       End If
    Next i
    Diff = Application.Transpose(temp)
End Function

Fonction Différence discontinu.xls