Function DerCol(xrg As Range, Optional relatif)
Const Formul = "=LARGE(IF(IF(ISERROR(Plage),COLUMN(Plage),-1)>0,IF(ISERROR(Plage),COLUMN(Plage),-1),IF(Plage<>"""",COLUMN(Plage),"""")),1)"
Dim yrg As Range, x, f
If xrg Is Nothing Then DerCol = CVErr(xlErrRef): Exit Function
If xrg.Rows.Count > 1 Then DerCol = CVErr(xlErrRef): Exit Function
If xrg.Areas.Count > 1 Then DerCol = CVErr(xlErrRef): Exit Function
With xrg.Parent
If xrg.Column + xrg.Columns.Count > .UsedRange.Column + .UsedRange.Columns.Count Then
Set yrg = Intersect(xrg, .Rows(xrg.Row).Resize(, .UsedRange.Column + .UsedRange.Columns.Count - 1))
End If
End With
f = Replace(Formul, "Plage", xrg.Address(0, 0))
x = Application.Evaluate(f)
If IsError(x) Then x = 0
If x <> 0 Then DerCol = x + IIf(IsMissing(relatif), 0, 1 - xrg.Column) Else DerCol = 0
End Function