Supprimer feuille excel si elle existe [Résolu/Fermé]

Signaler
Messages postés
208
Date d'inscription
dimanche 15 juillet 2007
Statut
Membre
Dernière intervention
15 mars 2018
-
Messages postés
8182
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
5 septembre 2020
-
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

Messages postés
8182
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
5 septembre 2020
1 460
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


Messages postés
8182
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
5 septembre 2020
1 460
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
Messages postés
208
Date d'inscription
dimanche 15 juillet 2007
Statut
Membre
Dernière intervention
15 mars 2018
8
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.
Messages postés
8182
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
5 septembre 2020
1 460
Essaies le code ci-dessus il doit fonctionner !!!
pour le message il suffit d'ajouter un msgbox avant le w.Delete