Public an As String 'déclare la variable an (Ancien Nom)
Public nn As String 'déclare la variable nn (Nouveau Nom)
Sub creaOnglet()
Dim dico As Object 'déclare la variable dico (DICtiOnary)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim tsd As Variant 'déclare la variable tsd (Tableau Sans Doublons)
Dim i As Integer 'déclare la variable i (incrément)
'création d'un tableau sans doublons
Set dico = CreateObject("scripting.dictionary") 'définit la variable dico
With Sheets("SOMMAIRE") 'prend en compte l'onglet "SOMMAIRE"
Set pl = .Range("A1:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
End With 'fin de la prise en compte de ...
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
dico(cel.Value) = "" 'alimente le dictionnaire
Next cel 'prochaine cellule de la boucle
tsd = dico.keys 'alimente le tableau tsd d'une liste dans doublons
'création des onglets
For i = 0 To UBound(tsd, 1) 'boucles sur toutes les valeurs du tableau tsd
Sheets("Modele").Copy After:=Sheets(Sheets.Count) 'copie l'onglet "Modèle" en dernier
On Error Resume Next 'gestion des erreurs (passe à la ligne suivante si une erreur est générée)
ActiveSheet.Name = tsd(i) 'renomme l'onglet (génère une erreur si un onglet porte déjà ce nom)
If Err > 0 Then 'condition : si une erreur a été générée
Err = 0 'annule l'erreur
Application.DisplayAlerts = False 'masque les messages d'Excel
ActiveSheet.Delete 'supprime l'onglet actif
Application.DisplayAlerts = True 'affiche les messages d'Excel
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Next i 'prochaine valeur de la boucle
Sheets("SOMMAIRE").Activate 'active l'onglet "SOMMAIRE"
'liens hypertexte
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
'ajoute un lien hypertexte à la cellule
ActiveSheet.Hyperlinks.Add Anchor:=cel, Address:="", SubAddress:= _
"'" & cel.Value & "'!A1", TextToDisplay:=cel.Value
Next cel 'prochaine cellule de la boucle
End Sub