Sub Macro2()
Dim B As Worksheet 'déclare la variable B (onglet Base)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TT As Variant 'déclare la variable TT (Tableau Temporaire)
Dim TEST As Boolean 'déclare la variable TEST
Dim J As Integer 'déclare la variable J (incrément)
Set B = Worksheets("Base") 'définit l'onglet B
TV = B.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
D(TV(I, 1)) = "" 'alimente le dictionnaire D avec les données de la colonne 1 de TV
Next I 'prochaine ligne de la boucle
TT = D.keys 'récupère dans le tableau temporaire TT la liste des éléments du dictionnaire D sans doublon
For I = 0 To UBound(TT) 'boucle 1 : sur tous les éléments du tableau temporaire TT
TEST = False 'initialise la variable TEST
For J = 1 To Sheets.Count 'boucle 2 : sur tous les onglets du classeur
'si l'élément de TT est égal au nom de l'onglet, définit la variable TEST, sort de la boucle 2
If TT(I) = Sheets(J).Name Then TEST = True: Exit For
Next J 'prochain onglet de la boucle 2
If TEST = False Then 'condition : si TEST est [FAUX]
Worksheets.Add after:=Sheets(Sheets.Count) 'ajoute un nouvel onglet à la fin
ActiveSheet.Name = TT(I) 'renomme l'onglet avec l'élément I du tableau temporaire TT
End If 'fin de la condition
Next I 'prochain élément de la boucle 1
End Sub