Bonsoir,
cf PJ
Fait avec un pgm générique. On peut définir le nb de niveaux et la zone de saisie
Set zSaisie = Range("B11:C21,B26:C36,B41:C51,B56:C66")
NbNiv = 2
Dim zSaisie, NbNiv
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set zSaisie = Range("B11:C21,B26:C36,B41:C51,B56:C66")
NbNiv = 2
If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
TblBD = [Tableau1].Value
Set d1 = CreateObject("Scripting.Dictionary")
nivCourant = Target.Column - zSaisie.Column + 1
Dim Tmp(): ReDim Tmp(1 To nivCourant)
For k = 1 To nivCourant - 1
Tmp(k) = Target.Offset(, -(nivCourant - k))
Next k
For i = 1 To UBound(TblBD)
témoin = True
For k = 1 To nivCourant - 1
If TblBD(i, k) <> Tmp(k) Then témoin = False: Exit For
Next k
If témoin Then d1(TblBD(i, nivCourant)) = ""
Next i
If d1.Count > 0 Then
temp = Join(d1.keys, ",")
Target.Validation.Delete
If temp <> "" Then Target.Validation.Add xlValidateList, Formula1:=temp
End If
End If
End Sub
Boisgontier