Effacer tous les onglets sauf 1

Sophie11

XLDnaute Occasionnel
Bonjour
Je dispose d'un classeur de plusieurs onglets:
onglet1: pomme
onglet2: poire
onglet3: orange
Je voudrais effacer tous mes onglets sauf poire.

Je peux faire :

Code:
Sheets("pomme").delete
Sheets("orange").delete

Mais j'aimerais faire un code sans utiliser le nom de mes onglet (sauf pour poire) de sorte que lorsque de nouveau onglet s'ajoute ils sont aussi supprimer...

Merci d'avance
 

Pierrot93

XLDnaute Barbatruc
Re : Effacer tous les onglets sauf 1

Bonjour Sophie,

essaye ainsi :

Code:
Option Explicit
Sub test()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In Worksheets
    If ws.Name <> "poire" Then If Worksheets.Count > 1 Then ws.Delete
Next ws
Application.DisplayAlerts = True
End Sub

bonne journée
@+
 

Sophie11

XLDnaute Occasionnel
Re : Effacer tous les onglets sauf 1

Merci ton code fonctionne. Par contre,ans le cas où ma feuille n'existe pas, il m'efface tout sauf la derniere. Il faudrait créer une condtion si la feuille n existe pas, on arrete la macro, si vous avez une idée? mon code est incorrect mais je pense que l'idée est là..


Code:
Dim ws As Worksheet
For Each ws In Worksheets
    If ws.Name <> "poire" Then
    MsgBox "Feuille non disponible"
    Exit Sub
    
    Else
Dim wss As Worksheet
Application.DisplayAlerts = False
For Each wss In Worksheets
    If wss.Name <> "poire" Then If Worksheets.Count > 1 Then wss.Delete
Next wss
Application.DisplayAlerts = True
     Exit For
    End If
Next ws
 

Pierrot93

XLDnaute Barbatruc
Re : Effacer tous les onglets sauf 1

Re,

regarde le code ci-dessous, avec fonction personnalisée :

Code:
Option Explicit
Sub test()
Dim ws As Worksheet
If FeuilleExiste("poire") Is Nothing Then Exit Sub
Application.DisplayAlerts = False
For Each ws In Worksheets
    If ws.Name <> "poire" Then If Worksheets.Count > 1 Then ws.Delete
Next ws
Application.DisplayAlerts = True
End Sub


Function FeuilleExiste(f As String) As Worksheet
On Error Resume Next
Set FeuilleExiste = Worksheets(f)
End Function

bonne soirée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 295
Membres
103 171
dernier inscrit
clemm