[B][COLOR="DarkSlateGray"]Option Explicit
Function LSeq(r As Range, v, Optional s As String = "V") As Long
Dim oDat, l As Long, c As Long, w As Long
Set r = Intersect(r, Sheets(r.Parent.Name).UsedRange) [COLOR="SeaGreen"]'pour réduire la plage aux données utiles.[/COLOR]
ReDim oDat(1 To r.Rows.Count, 1 To r.Columns.Count)
For l = 1 To UBound(oDat, 1) [COLOR="SeaGreen"]'parce que la définition de 'Range' n'est pas univoque.[/COLOR]
For c = 1 To UBound(oDat, 2)
oDat(l, c) = r.Cells(l, c)
Next c
Next l
If UCase(s) <> "H" And l > 2 And c > 2 Then oDat = Application.Transpose(oDat) [COLOR="SeaGreen"]'parce que 'transpose' n'est pas un opérateur de transposition.[/COLOR]
For l = 1 To UBound(oDat, 1)
For c = 1 To UBound(oDat, 2)
If Not IsEmpty(oDat(l, c)) Then If oDat(l, c) = v Then LSeq = Application.Max(LSeq, w): w = 0 Else w = w + 1
Next c
Next l
LSeq = Application.Max(LSeq, w)
End Function[/COLOR][/B]