Sub CréerOnglets()
Dim s As Object, t As Variant, i&, nom$, vis%, n&
Dim Existe As Boolean, Onglet As Worksheet
Application.ScreenUpdating = False
'---création des feuilles---
t = Sheets("Base").[A1].CurrentRegion
For i = 2 To UBound(t)
'Ici
Existe = False
For Each Onglet In ThisWorkbook.Worksheets
If Onglet.Name = t(i, 1) Then Existe = True
Next
'jusque là
If Not Existe Then GoTo 1
nom = CStr(t(i, 2))
'idem
Existe = False
For Each Onglet In ThisWorkbook.Worksheets
If Onglet.Name = nom Then Existe = True
Next
'voilà
If Not Existe Then
If nom <> "" Then
ThisWorkbook.Unprotect "MotDePasseClasseur"
vis = Sheets(t(i, 1)).Visible
Sheets(t(i, 1)).Visible = True
Sheets(t(i, 1)).Copy Before:=Sheets(1)
ActiveSheet.Name = nom
Sheets(nom).Unprotect "MotDePasseFeuille" 'adapter le mot de passe
Sheets(nom).[C7] = nom 'nom de l'élève
Sheets(nom).Protect "MotDePasseFeuille"
Sheets(t(i, 1)).Visible = vis 'état initial
End If
End If
1 Next
'---placement en tête des onglets autres que ceux des élèves---
For Each s In Sheets
If IsError(Application.Match(s.Name, Application.Index(t, , 2), 0)) _
Then s.Move Before:=Sheets(1): n = n + 1
Next
'---classement des onglets des élèves dans l'ordre de la feuille---
For i = 2 To UBound(t)
If CStr(t(i, 2)) <> "" Then _
Sheets(CStr(t(i, 2))).Move After:=Sheets(n): n = n + 1
Next
Sheets("Base").Move Before:=Sheets(1)
Sheets("Base").Activate
ThisWorkbook.Protect "MotDePasseClasseur"
End Sub