Supprimer feuille excel si elle existe

Résolu/Fermé
ath80 Messages postés 208 Date d'inscription dimanche 15 juillet 2007 Statut Membre Dernière intervention 15 mars 2018 - 16 juil. 2013 à 22:39
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 19 juil. 2013 à 11:41
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.

A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
16 juil. 2013 à 22:53
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
16 juil. 2013 à 23:00
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
ath80 Messages postés 208 Date d'inscription dimanche 15 juillet 2007 Statut Membre Dernière intervention 15 mars 2018 9
17 juil. 2013 à 21:03
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
19 juil. 2013 à 11:41
Essaies le code ci-dessus il doit fonctionner !!!
pour le message il suffit d'ajouter un msgbox avant le w.Delete
0