Supprimer feuille excel si elle existe

Résolu
ath80 Messages postés 234 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrai supprimer une feuille excel si celle-ci existe. J'ai fait un exemple avec une feuille nommée abcd.

Voici ce qui est rentré dans un module:

Public Function FeuilleInexistante(ByVal strNomFeuille As String) As Boolean

FeuilleInexistante = IsError(Evaluate("=" & strNomFeuille & "'!A1"))

End Function

Voici la macro:

Sub Macro2()
Dim strNomFeuille As String

strNomFeuille = "abcd"

If FeuilleInexistante(strNomFeuille) Then
MsgBox "Cette feuille n'existe pas dans le classeur" & ThisWorkbook.Name
Else
Sheets("abcd").Select
ActiveWindow.SelectedSheets.Delete
End If

End Sub

Ce que j'ai fait ne fonctionne pas. Pouvez vous m'aider ?
Merci.

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Code corrigé :
    Public Function FeuilleInexistante(ByVal strNomFeuille As String) As Boolean
    
    FeuilleInexistante = IsError(Evaluate("='" & strNomFeuille & "'!A1"))
    
    End Function
    
    Sub Macro2()
    Dim strNomFeuille As String
    
    strNomFeuille = "abcd"
    
    If FeuilleInexistante(strNomFeuille) Then
    MsgBox "Cette feuille n'existe pas dans le classeur" & ThisWorkbook.Name
    Else
    Application.DisplayAlerts = False
    Worksheets("abcd").Delete
    Application.DisplayAlerts = True
    End If
    
    End Sub


    1
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Mais je l'aurais écris comme suit :
      Sub x()
      Dim w As Worksheet
        On Error Resume Next
        Set w = Worksheets("abcd")
        On Error GoTo 0
        If w Is Nothing Then
          MsgBox "Cette feuille n'existe pas dans le classeur " & ThisWorkbook.Name
        Else
          Application.DisplayAlerts = False
          w.Delete
          Application.DisplayAlerts = True
        End If
      End Sub

      Patrice
      0
    2. ath80 Messages postés 234 Statut Membre 9
       
      Bonjour,
      Il me manquait juste un ' dans FeuilleInexistante = IsError(Evaluate("='" & strNomFeuille & "'!A1")).

      Par contre, le code pour supprimer ne fonctionnait pas:
      Application.DisplayAlerts = False Worksheets("abcd").Delete Application.DisplayAlerts = True

      J'ai remis le code suivant:
      Sheets("abcd").Select
      ActiveWindow.SelectedSheets.Delete

      Ca fonctionne mais une fenêtre s'affiche et demande de cliquer sur supprimer pour valider.
      Je voudrais savoir s'il est possible de modifier le message affiché ? Je voudrais mettre: Attention, les données de la semaine précédente vont être supprimées. Veuillez confirmer.

      http://imageshack.com/f/5niodsp

      Merci.
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Essaies le code ci-dessus il doit fonctionner !!!
      pour le message il suffit d'ajouter un msgbox avant le w.Delete
      0