Option Explicit
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim P As Range, NOM$, annee%, mois, t, entete$, i&, n&, tt()
If Target.Column = 4 Then
On Error Resume Next 'si P ne peut pas être défini
Set P = Rows("11:" & Range("A" & Rows.Count).End(xlUp).Row - 2)
If P.Row < 11 Or Intersect(Target, P) Is Nothing Then Exit Sub
On Error GoTo 0
Cancel = True
NOM = LCase(Cells(Target.Row, 1))
annee = [A2]
mois = [B2]
With Feuil6
t = .Range("A2", .Range("R" & .Rows.Count).End(xlUp)(2))
entete = .Name & " : " & Application.Proper(NOM)
End With
For i = 1 To UBound(t)
If LCase(t(i, 18)) = NOM And t(i, 17) = annee And t(i, 16) = mois And t(i, 8) > 0 Then
n = n + 1
ReDim Preserve tt(1 To 3, 1 To n)
tt(1, n) = t(i, 3)
tt(2, n) = t(i, 4)
tt(3, n) = t(i, 8)
End If
Next
If n Then
With UserForm1.ListBox1 'adapter si nécessaire
If n = 1 Then
.Clear 'RAZ
.AddItem tt(1, 1)
.List(0, 1) = tt(2, 1)
.List(0, 2) = tt(3, 1)
Else
.List = Application.Transpose(tt)
End If
.Parent.Caption = entete
.Parent.Show 0 'non modal
End With
Else
MsgBox "Aucune réservation...", , entete
End If
End If
If Target.Column = 5 Then
On Error Resume Next 'si P ne peut pas être défini
Set P = Rows("11:" & Range("A" & Rows.Count).End(xlUp).Row - 2)
If P.Row < 11 Or Intersect(Target, P) Is Nothing Then Exit Sub
On Error GoTo 0
Cancel = True
NOM = LCase(Cells(Target.Row, 1))
annee = [A2]
mois = [B2]
With Feuil6
t = .Range("A2", .Range("R" & .Rows.Count).End(xlUp)(2))
entete = .Name & " : " & Application.Proper(NOM)
End With
For i = 1 To UBound(t)
If LCase(t(i, 18)) = NOM And t(i, 17) = annee And t(i, 16) = mois And t(i, 15) = "Pension complète" Then
n = n + 1
ReDim Preserve tt(1 To 3, 1 To n)
tt(1, n) = t(i, 3)
tt(2, n) = t(i, 4)
tt(3, n) = t(i, 8) + t(i, 9) + t(i, 10) + t(i, 11)
End If
Next
If n Then
With UserForm1.ListBox1 'adapter si nécessaire
If n = 1 Then
.Clear 'RAZ
.AddItem tt(1, 1)
.List(0, 1) = tt(2, 1)
.List(0, 2) = tt(3, 1)
Else
.List = Application.Transpose(tt)
End If
.Parent.Caption = entete
.Parent.Show 0 'non modal
End With
Else
MsgBox "Aucune réservation...", , entete
End If
End If
End Sub