Sub listRestants()
'patricktoulon
Dim tblprime, tblexist, li&, li2&, sel As Range
Set sel = Selection
tblprime = ThisWorkbook.Sheets("Personnes").ListObjects("T_personne").DataBodyRange.Value 'tblprime c'est le tableau original complet des personnes
tblexist = ActiveSheet.Cells(2, Selection.Column).Resize(15).Value 'tblexiste c'est le tableau des personne presente dans la colonne de la cellule selectée
For li = 1 To UBound(tblprime)
'on vide les items de tblprime si il existent dans tblexist
'et si il sont presents sur la ligne (offset -1 et 1 en colonne)
If sel <> "" And tblprime(li, 1) <> "" Then
If WorksheetFunction.CountIf(Cells(sel.Row, 3).Resize(1, 3), tblprime(li, 1)) > 0 Then tblprime(li, 1) = ""
End If
For li2 = 1 To UBound(tblexist)
If tblexist(li2, 1) <> "" Then If tblexist(li2, 1) = tblprime(li, 1) Then tblprime(li, 1) = ""
Next
Next
With Selection.Validation
.Delete
'la liste de validation est remplie avec le join du transpose du tblprime
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Join(Application.Transpose(tblprime), ",")
.IgnoreBlank = True 'on fait sauter les blancs il y en a forcement au fur et à mesure
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub