je n'aivais pas vue votre problème avec ce tableau, alors une adaptation sans tableau.
Sub test()
MesHeures = Sheets("Contraintes").Range("B3:I9").Value 'les horaires par jour
Set dict = CreateObject("scripting.dictionary")
For Each c In Sheets("Contraintes").Range("L2:M100,P2:P100").Cells 'les plages avec jours férie et congés, exagéré !!!
If Len(c.Value) Then dict(Fix(c.Value)) = vbEmpty
Next
MesDates = dict.keys 'les jours féries & congés
With Sheets("Accueil").Range("E9").CurrentRegion 'sans tableau !!!!!
.Columns(4).ClearContents 'effacer 4ième colonne
For i = 2 To .Rows.Count 'boucles les lignes
.Cells(i, 4).Value = Durée(.Cells(i, 1).Value, .Cells(i, 2).Value)
Next
End With
End Sub