Dupliquer une feuille

Bonjour,

Je suis en train d'écrire un code VBA pour dupliquer une feuille. Le code que j'ai écrit est le suivant :

Sub DupliquerFeuilleTURPE1()
    Dim wsSource As Worksheet
    Dim wsDestination As Worksheet
    Dim wsSummary As Worksheet
    Dim newSheetName As String
    Dim userInput As String
    Dim typeFeuille As String
    Dim derniereColonneRose As Range
    Dim nouvelleColonne As Range
    Dim i As Long
    Dim suffix As Integer

    ' Demander à l'utilisateur de choisir le type de feuille
    typeFeuille = InputBox("Veuillez choisir le type de feuille (HTA ou BT) :", "Choisir le type de feuille")

    ' Vérifier si l'utilisateur a entré un type valide
    If typeFeuille <> "HTA" And typeFeuille <> "BT" Then
        MsgBox "Type de feuille invalide. La feuille ne sera pas dupliquée.", vbExclamation
        Exit Sub
    End If

    ' Définir la feuille source en fonction du type choisi
    If typeFeuille = "HTA" Then
        Set wsSource = ThisWorkbook.Sheets("HTA-C1,C2,C3")
    ElseIf typeFeuille = "BT" Then
        Set wsSource = ThisWorkbook.Sheets("BT>36 kV C4")
    End If

    ' Demander à l'utilisateur de renommer la nouvelle feuille
    userInput = InputBox("Veuillez entrer un nom pour la nouvelle feuille TURPE :", "Renommer la feuille")

    ' Vérifier si l'utilisateur a entré un nom
    If Trim(userInput) = "" Then
        MsgBox "Aucun nom n'a été entré. La feuille ne sera pas dupliquée.", vbExclamation
        Exit Sub
    End If

    ' Déterminer un nom unique pour la nouvelle feuille
    newSheetName = typeFeuille & "-" & Trim(userInput)
    suffix = 1
    On Error Resume Next
    Do While Not wsDestination Is Nothing
        newSheetName = newSheetName & "_1"
        Set wsDestination = ThisWorkbook.Sheets(newSheetName)
    Loop
    On Error GoTo 0

    ' Dupliquer la feuille
    wsSource.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    Set wsDestination = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    wsDestination.Name = newSheetName

    ' Nom de la feuille où la colonne sera ajoutée
    Set wsSummary = ThisWorkbook.Sheets("Feuil8")

 ' Trouver la prochaine colonne vide dans la feuille existante
    For i = 8 To wsSummary.Columns.Count ' Commence à H et va jusqu'à la dernière colonne
        If wsSummary.Columns(i).Interior.Color = RGB(255, 192, 203) Then ' Couleur rose
            Set derniereColonneRose = wsSummary.Columns(i)
        End If
    Next i
 ' Insérer après la colonne H si aucune colonne rose trouvée, sinon après la dernière colonne rose
    If derniereColonneRose Is Nothing Then
        Set nouvelleColonne = wsSummary.Columns("I")
    Else
        Set nouvelleColonne = derniereColonneRose.Offset(0, 1)
    End If
  ' Insérer la nouvelle colonne
    nouvelleColonne.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

    ' Colorer la nouvelle colonne en rose
    nouvelleColonne.Offset(0, -1).Interior.Color = RGB(255, 192, 203) ' Couleur rose

    ' Ajouter des bordures sur les côtés gauche et droit de la nouvelle colonne
    With nouvelleColonne.Offset(0, -1).Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = vbBlack
    End With

    With nouvelleColonne.Offset(0, -1).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = vbBlack
    End With

    ' Ajouter des bordures fines entre les autres lignes
    With nouvelleColonne.Offset(0, -1).Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = RGB(192, 192, 192)
    End With

    With nouvelleColonne.Offset(0, -1).Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = RGB(192, 192, 192)
    End With

    ' Ajouter une bordure en dessous de la première ligne uniquement
    With nouvelleColonne.Offset(0, -1).Cells(1, 1).Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = vbBlack
    End With

    ' Ajouter le nom de la nouvelle feuille dans la première cellule de la nouvelle colonne
     nouvelleColonne.Offset(0, -1).Cells(1, 1).Value = newSheetName

    ' Lier la plage A8:A70 de la nouvelle feuille TURPE à la nouvelle colonne dans la feuille existante
    For i = 8 To 70
        nouvelleColonne.Offset(0, -1).Cells(i, 1).Formula = "='" & newSheetName & "'!A" & i
    Next i

    ' Afficher un message à l'utilisateur
    MsgBox "La feuille TURPE a été dupliquée et renommée en '" & newSheetName & "'."
End Sub

Avec ce code, j'arrive à dupliquer ma feuille mais je ne comprends pourquoi j'ai ces messages d'erreurs alors que je n'ai pas de feuille de ce nom, et que la feuille que je renomme n'est pas de ce nom :

image

Cette boîte se présente plusieurs fois, mais le mot "bilan" change en un autre mot.

Ainsi sauriez-vous me dire comment améliorer mon code et me dire ce qui ne va pas ?

Solution trouvée : ajouter le code suivant permet de gérer l'erreur.

Dim memoDA as boolean

'Au début de la procédure
memoDA = application.DisplayAlerts

'Avant de faire ta copie de feuille
application.DisplayAlerts = False

'Suite de ton code...
'Puis tu remets DisplayAlerts  en place
Application.DisplayAlerts = memoDA
Rechercher des sujets similaires à "dupliquer feuille"