Pour palier aux noms identiques, vous pouvez faire comme ceci, au lieu de mettre
.Name = .[d1]
vous pouvez mettre ceci :
.Name = .[d1] & "(" & Sheets.Count & ")"
Ca va rajouter un chiffre entre parenthèse sur le nom des onglets mais ça contourne le problème du doublon..
Essayez déjà ceci qui devrai régler l'autre problème en cascade.