Test si nom onglet existant

Bonjour à tous,

je me tourne vers vous car j'ai un soucis pour coder dans cette commande:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not IsEmpty(Range("F5")) Then

End Sub

Je souhaiterai ajouter un test, qui après copie de la feuille "modele ex" vérifie avant de le renommer que la variable Expe1 ne soit pas déjà attribuée à un autre onglet. Si c'est bon ça continue, si ce n'est pas bon une msgbox s'ouvre et la boucle s'arrete.

Vous avez le fichier en PJ. pour l'utiliser, entre un mot dans la case trigramme, un onglet se genere automatiquement sur le modele de l'onglet "modele ex".

J'espere avoir été clair,

je vous remercie par avance pour votre aide.

16test.xlsm (33.21 Ko)

Bonjour et bienvenue sur le forum

Essaie ce code, bien qu'il y ait sûrement plus simple :

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False
    If Not IsEmpty(Range("F5")) Then
        If Not Application.Intersect(Target, Range("F5")) Is Nothing Then
            Dim Expe1 As String
            Expe1 = Range("F5")
            On Error GoTo suite
            Sheets(Expe1).Select
            On Error GoTo 0
            Application.Undo
            MsgBox "La feuille " & Expe1 & " existe déjà.", 16
           Application.EnableEvents = True
Exit Sub

suite:
            Sheets("modele ex").Select
            Sheets("modele ex").Copy Before:=Sheets(1)
            ActiveSheet.Name = Expe1
            ActiveSheet.Tab.ColorIndex = 46
            Sheets("Inventaire General").Select
            Range("F5").ClearContents
        End If
    End If
    Application.EnableEvents = True
End Sub

Bonjour et bonne année,

Bonjour gmb,

Une alternative à la proposition de gmb.

Cdlt.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$F$5" And Not IsEmpty([F5]) Then
        If Not IsWorksheet(Target.Value) Then
            ActiveWorkbook.Worksheets("modele ex").Copy before:=ActiveWorkbook.Worksheets(3)
            With ActiveSheet
                .Name = Target.Value
                .Tab.ColorIndex = 46
            End With
        Else
            MsgBox "La feuille " & Target.Value & " est déjà présente dans le classur.", vbOKOnly + vbInformation
        End If
    End If

    Application.EnableEvents = False
    Me.[F5].ClearContents
    Application.EnableEvents = True

End Sub

Private Function IsWorksheet(strName As String) As Boolean
Dim ws As Worksheet

    IsWorksheet = False
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name = strName Then
            IsWorksheet = True
        End If
    Next

End Function

Merci a vous 2,

C'est exactement ce que je voulais. J'ai opté pour la solution de gmb, première que j'ai testé et qui me convenait trés bien.

Bonne journée et encore merci!

Rechercher des sujets similaires à "test nom onglet existant"