Canard,
Avec ce que je t'avais proposé, une adaptation est possible si tu supprime une ligne puisque je prends la plus grande valeur entre les doublons et que j'y ajoute 1. Ca marchera donc si tu supprime le ..02 et que le ..03 existe (le prochain sera le 04). Par contre si tu supprimes le ..03, le code ne pourras pas deviner qu'il y avait déjà un ..03 et prendra à nouveau cette valeur pour le suivant.
J'ai repris tes dernières demandes et corriger mon code :
Sub AjoutCode()
Dim strCode As String, I As Integer, L As Long, J As Long, N As Integer
L = 1
While Range('A' & L).Value <> ''
strCode = Left(Range('A' & L).Value, 1)
I = 1
Do While I > 0
I = InStr(I + 1, Range('A' & L).Value, ' ')
If I > 0 Then
strCode = strCode & Left(Mid(Range('A' & L).Value, I + 1), 1)
End If
Loop
strCode = strCode & Left(Range('B' & L).Value, 1)
I = 1
Do While I > 0
I = InStr(I + 1, Range('B' & L).Value, ' ')
If I > 0 Then
strCode = strCode & Left(Mid(Range('B' & L).Value, I + 1), 1)
End If
Loop
J = 1
N = 0
strCode = UCase(strCode)
While Range('C' & J).Value <> ''
If J <> L Then
If Left(Range('C' & J).Value, Len(Range('C' & J).Value) - 2) = strCode Then
If CInt(Right(Range('C' & J).Value, 2)) > N Then N = CInt(Right(Range('C' & J).Value, 2))
End If
End If
J = J + 1
Wend
N = N + 1
If Range('C' & L).Value = '' Then
If N < 10 Then
Range('C' & L).Value = strCode & '0' & N
Else
Range('C' & L).Value = strCode & N
End If
End If
L = L + 1
Wend
End Sub
Message édité par: soft, à: 24/10/2005 06:30