1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| Private Sub CommandButton1_Click()
Dim NomFeuil As String, NexistePas As Boolean, Caractere As String
'Le nom de ta future feuille est en Feuil1!B4
NomFeuil = Sheets("Feuil1").Range("B4")
'test les caractères spéciaux à éviter :
If Test_Nom_Feuille(NomFeuil, Caractere) = False Then GoTo Faute
'test si la feuille n'existe pas déjà :
On Error Resume Next
NexistePas = Sheets(NomFeuil).Name <> ""
On Error GoTo 0
If NexistePas = False Then
'si tout ok : on copie
Sheets("Feuil1").Copy Before:=Sheets(2)
'on renomme
ActiveSheet.Name = NomFeuil
'on supprime le vilain méchant bouton pas beau
ActiveSheet.Shapes.Range(Array("CommandButton1")).Delete
Else
'si pas ok
MsgBox "Le nom en Feuil1!B4 n'est pas valide : Feuille déjà existante", vbCritical
End If
Exit Sub
'traitement d'erreur caractère spécial :
Faute:
MsgBox "Le nom en Feuil1!B4 n'est pas valide." & vbCrLf & "Le caractère : " & Caractere & " est interdit.", vbCritical
End Sub
'test si la chaine contient un caractère à éviter
Function Test_Nom_Feuille(Nom As String, Carac As String) As Boolean
Dim i As Byte, Carac_Interdits
Carac_Interdits = Split("/,\,:,*,?,"",<,>,|", ",")
For i = LBound(Carac_Interdits) To UBound(Carac_Interdits)
If InStr(Nom, Carac_Interdits(i)) > 0 Then
Test_Nom_Feuille = False
Carac = Carac_Interdits(i)
Exit Function
End If
Next i
Test_Nom_Feuille = True
End Function |
Partager