Function SujMultiCol(ByVal Src, ByVal CDéb As Integer, ByVal CFin As Integer, _
Optional ByVal Pas As Integer = 1, Optional ByVal Format As String)
Dim TDon(), LDon As Long, CDon As Long, LAuxMax As Long, LAux As Long, TAuxClé(), TAuxLgn() As Long, _
Sujet, LesListes(), N As Long, TLgn() As Long, L As Long
If TypeOf Src Is Excel.Range Then TDon = Src.Value Else TDon = Src
For LDon = 1 To UBound(TDon, 1): For CDon = CDéb To CFin Step Pas
If Not IsEmpty(TDon(LDon, CDon)) Then LAuxMax = LAuxMax + 1
Next CDon, LDon
ReDim TAuxClé(1 To LAuxMax, 1 To 1), TAuxLgn(1 To LAuxMax)
For LDon = 1 To UBound(TDon, 1): For CDon = CDéb To CFin Step Pas
If Not IsEmpty(TDon(LDon, CDon)) Then
LAux = LAux + 1: TAuxClé(LAux, 1) = TDon(LDon, CDon): TAuxLgn(LAux) = LDon
End If: Next CDon, LDon
Sujet = SujetCBx(TAuxClé, Format:=Format)
LesListes = Sujet(1)
For N = 0 To UBound(LesListes): TLgn = LesListes(N)
For L = 1 To UBound(TLgn): TLgn(L) = TAuxLgn(TLgn(N)): Next L
LesListes(N) = TLgn: Next N
SujMultiCol = Array(Sujet(0), LesListes)
End Function