Ne pas créer des feuilles si elle existe déjà

Bonjour à tous,

Hier j'ai demandé un code pour créer des feuilles en fonction d'une liste sur une certaine feuille.

Jean-Eric m'a fourni un code qui me convient totalement.

Cependant, ma liste peut être variable et j'aimerais ajouter un bout de code qui dit "si ce nom est déjà celui d'une feuille alors ne pas créer la feuille" pour que seul les nouveaux éléments de ma liste se créent.

Voici mon code

Sub Ajout_des_feuilles()
'
' Etude_PNs_crise_degivreurs Macro
'

'Ajout des réf
If MsgBox("Les onglets des références ont-ils été déjà créés ?", vbYesNoCancel + vbDefaultButton1, "Onglets références") = vbNo Then

    Dim nombreref As Long
    Dim k As Long: k = 2

    With Worksheets("Feuil1")
        nombreref = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(3).Value = nombre - 1
        .Cells(4).Value = "références"
    End With

    With Worksheets("Feuil1")
        Do While .Cells(k, 1).Value <> ""
            Worksheets.Add after:=Worksheets(Worksheets.Count())
            With ActiveSheet
                .Name = Replace(Worksheets("Feuil1").Cells(k, 1).Value, "/", " ")
                With .Cells(1)
                    .Value = Worksheets("Feuil1").Cells(k, 1).Value
                    .Font.Size = 20
                End With
            End With
            k = k + 1
        Loop
    End With
End If

End Sub

Le programme change également le nom des références qui contiennent un "/" par un espace.

Mais si je lance ce programme car il y a un nouvel élement dans ma liste, il m'indique un message d'erreur 1004 disant que le nom est déjà attribué forcément.

J'ai essayé de faire cela avec les erreurs

on error resume next

mais cela crée les feuilles déjà existantes quand même en leur donnant le nom de base (Feuilx).

Merci d'avance pour votre aide,

Simon

Bonjour,

Une proposition qui permet de vérifier si la feuille existe avant d'en insérer une autre :

Sub Ajout_des_feuilles()
'
' Etude_PNs_crise_degivreurs Macro
'

'Ajout des réf
If MsgBox("Les onglets des références ont-ils été déjà créés ?", vbYesNoCancel + vbDefaultButton1, "Onglets références") = vbNo Then

    Dim nombreref As Long, NomFeuille As String
    Dim k As Long: k = 2

    With Worksheets("Feuil1")
        nombreref = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(3).Value = nombre - 1
        .Cells(4).Value = "références"
    End With

    With Worksheets("Feuil1")
        Do While .Cells(k, 1).Value <> ""
            NomFeuille = Replace(Worksheets("Feuil1").Cells(k, 1).Value, "/", " ")
            If Not FeuilleExiste(NomFeuille) Then
                Worksheets.Add after:=Worksheets(Worksheets.Count())
                With ActiveSheet
                    .Name = NomFeuille
                    With .Cells(1)
                        .Value = Worksheets("Feuil1").Cells(k, 1).Value
                        .Font.Size = 20
                    End With
                End With
            End If
            k = k + 1
        Loop
    End With
End If

End Sub
Public Function FeuilleExiste(FeuilleAVerifier As String) As Boolean
'fonction qui vérifie si la "FeuilleAVerifier" existe dans le Classeur actif
'par Excel-Malin.com ( https://excel-malin.com )

On Error GoTo SiErreur
Dim Feuille As Worksheet

    FeuilleExiste = False
    For Each Feuille In Worksheets
        If Feuille.Name = FeuilleAVerifier Then
            FeuilleExiste = True
            Exit Function
        End If
    Next Feuille
Exit Function

SiErreur:
MsgBox "Une erreur s'est produite..."
FeuilleExiste = CVErr(xlErrNA)
End Function

Bonjour Pedro22,

C'est parfait, c'est exactement ce qu'il me fallait.

Merci beaucoup.

Simon

Rechercher des sujets similaires à "pas creer feuilles existe deja"