Sub test()
Dim Dico As Object
Set Dico = CreateObject("Scripting.Dictionary")
'création de la liste 0 à 9 puis A à Z
Dim ListeCode(1 To 36, 1 To 2)
For i = 48 To 57
ListeCode(i - 47, 1) = Chr(i)
Next
For i = 65 To 90
ListeCode(i - 54, 1) = Chr(i)
Next
i = 0
Do
'génère une lettre aléatoirement entre A et Z
Carac1 = Chr(Int((Rnd + (64 / 26)) * 26) + 1)
'génère une chiffre aléatoirement entre 0 et 9
Carac2 = Int(Rnd * 10)
'quand un caractère ci-dessus n'a pas encore été généré, on l'affecte à l'élément
'suivant de la ListeCode
If Not Dico.Exists(Carac1) Then
Dico.Add Carac1, Carac1
i = i + 1
ListeCode(i, 2) = Carac1
ElseIf Not Dico.Exists(Carac2) Then
Dico.Add Carac2, Carac2
i = i + 1
ListeCode(i, 2) = Carac2
End If
Loop Until i = 36
Range("A1:B36").Value = ListeCode
End Sub