Private Sub CommandButton1_Click()
Dim Dico As Object
Dim Data() As Variant, Plg As Variant
Dim i&
Dim F As Worksheet
'on crée un objet dictionaire, qui récupèrera les valeurs sans doublon
Set Dico = CreateObject("Scripting.dictionary")
'On met dans un tableau VBA les noms de la colonne B et C (plus rapide pour un grand nombre de noms)
Plg = Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp).Offset(0, 1)).Value
'Pour toute les lignes du tableau
For i = LBound(Plg, 1) To UBound(Plg, 1)
'La clé du dictionnaire est égale au nom an colonne 1 du tableau VBA (la colonne 2 de la feuille)
Dico(Plg(i, 1)) = Plg(i, 1)
'Prochaine ligne du tableau
Next i
'On met les clés dans un autre tableau VBA
Data = Dico.Keys
'Pour chaque ligne du tableau des clés
For i = LBound(Data) To UBound(Data)
'Si il y a une erreure on passe à la ligne suivante
On Error Resume Next
'On dis que F est égal à la feuille du nom de la valeur i du tableau des clés
'si cette feuille n'existe pas il y a une erreur gérée par la ligbne précédente
Set F = Sheets(Data(i))
'si il y a une erreur on l'annule
On Error GoTo 0
''si f n'est rien, donc si la feuille n'existe pas
'on la crée au bout des onglets
If F Is Nothing Then Sheets.Add(after:=Sheets(i + 1)).Name = Data(i)
'Prochaine ligne du tableau des clès
Next i
End Sub