Bonsoir,
Dim TblBD(), NBLig
Sub CreeID()
NBLig = [Tableau1].Rows.Count
ReDim TblBD(1 To NBLig, 1 To 2)
For i = 1 To NBLig
TblBD(i, 1) = [Tableau1].Item(i, 1)
TblBD(i, 2) = [Tableau1].Item(i, 1).IndentLevel + 1
Next i
TblBD(1, 2) = "1-1-"
itemp = TblBD(1, 2)
For i = 2 To NBLig
niv = TblBD(i, 2)
If nivprecedent = niv Then
tmp = maxi2(niv)
x = Right(tmp, 2)
y = Left(x, 1) + 1
TblBD(i, 2) = Left(tmp, niv * 2) & y & "-"
Else
If niv > nivprecedent Then
tmp = itemp
TblBD(i, 2) = tmp & "1-"
Else
tmp = maxi2(niv)
x = Right(tmp, 2)
y = Left(x, 1) + 1
TblBD(i, 2) = Left(tmp, Len(tmp) - 2) & y & "-"
End If
End If
nivprecedent = niv
itemp = TblBD(i, 2)
[Tableau1].Item(i, 2) = TblBD(i, 2)
Next i
[b2].Resize(NBLig, 1) = Application.Index(TblBD, , 2)
End Sub
Function maxi(niv)
For j = 1 To NBLig
If Len(TblBD(j, 2)) = niv * 2 Then
If TblBD(j, 2) > mx Then mx = TblBD(j, 2)
End If
Next j
maxi = mx
End Function
Function maxi2(niv)
For j = 1 To NBLig
If Len(TblBD(j, 2)) = niv * 2 + 2 Then
If TblBD(j, 2) > mx Then mx = TblBD(j, 2)
End If
Next j
maxi2 = mx
End Function
Boisgontier