Sub Code()
'- La première lettre représente le genre (M = Masculin / F = Féminin) --- Colonne A
'- Les chiffres suivants représentent la date de naissance (exemple : 02/05/2005 = 02052005) ---Colonne B
'- Ensuite, il s'agit des 5 premières lettres du nom ---Colonne C
'(si le nom est inférieur à 5 lettres, on complète avec des " * ")
'- Le numéro se termine ensuite par "01".
'(Si "01" est déjà existant, alors on remplace par "02", "03", etc...)
Dim Logique As String, ligne As Long, Total As String
Dim Dico As Object, Num As Long, Ok As Boolean
Set Dico = CreateObject("Scripting.dictionary")
Dico.comparemode = vbTextCompare
For ligne = 2 To Range("A" & Rows.Count).End(xlUp).Row
Logique = Left(Range("A" & ligne), 1) & Replace(Range("B" & ligne), "/", "") & Left(Range("C" & ligne) & "*****", 5)
Num = 1
Ok = False
Do
Total = Logique & Right("0" & Num, 2)
If Not Dico.exists(Total) Then
Dico.Add Total, Total
Ok = True
Else
Num = Num + 1
End If
Range("E" & ligne) = Total
Loop Until Ok
Next
End Sub