Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [C13].CurrentRegion) Is Nothing Then Exit Sub
Dim a, fer As Range, numero&, nom$, Dates As Range, Conges As Range, t(), i&, ub%, n&, rest()
a = Array("CA", "RTT", "CA/HP", "CA/FR", "(CA)", "(RTT)", "(CA/HP)", "(CA/FR)") 'à adapter
Set fer = [Feries]
numero = Application.Max(Sheets("Congés").[A:A]) + 1 'nécessaire pour la MFC
nom = Target
Set Dates = [F11].Resize(, 31) 'adapter éventuellement
Set Conges = Target(16, 4).Resize(, 31) 'adapter éventuellement
'---tableau de base sans week-ends et jours fériés---
ReDim t(1 To 2, 1 To 31)
For i = 1 To 31
If Weekday(Dates(i), 2) < 6 And Application.CountIf(fer, Dates(i)) = 0 _
Then ub = ub + 1: t(1, ub) = Dates(i).Value2: t(2, ub) = Conges(i)
Next i
'---analyse des congés---
For i = 1 To ub
If IsNumeric(Application.Match(Trim(t(2, i)), a, 0)) Then
n = n + 1
ReDim Preserve rest(1 To 5, 1 To n)
rest(1, n) = numero
rest(2, n) = nom
rest(3, n) = t(1, i)
Do
i = i + 1
If i > ub Then Exit Do
Loop While t(2, i) = t(2, i - 1)
i = i - 1
rest(4, n) = t(1, i)
rest(5, n) = t(2, i)
End If
Next i
'---restitution---
If n Then
With Sheets("Congés")
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
i = .Range("A" & .Rows.Count).End(xlUp)(2).Row
.Cells(i, 1).Resize(n, 5) = Application.Transpose(rest) 'maximum 65536 lignes
.Cells(i, 6).Resize(n) = "=RC[-2]-RC[-3]+1"
.Cells(i, 7).Resize(n) = "=NETWORKDAYS(RC[-4],RC[-3],Feries)"
.Activate
End With
End If
End Sub