Supprimer toutes les feuilles sauf la première

Toug

XLDnaute Junior
Bonjour,
Pour initialiser ma macro je voudrais supprimer toutes les feuilles sauf la première qui me sert de base.
J'ai écrit un code, mais ça ne semble pas marcher, je ne comprend pas pourquoi:
Code:
Application.DisplayAlerts = False
Dim wSheets As Worksheet
For i = 2 To 10

    On Error Resume Next
    Set wSheet = Sheets(i)
    If wSheets Is Nothing Then
        MsgBox "Nexistepas" & i
    Else
        Sheets(i).Delete
    End If
Next i

End Sub
Avec ce code, j'ai l'impression que les feuilles n'existent pas, dois y avoir une mauvaise syntaxe quelque part.

Merci d'avance.
 

job75

XLDnaute Barbatruc
Re : Supprimer toutes les feuilles sauf la première

Bonjour DoubleZero

(...) une subtilité qui, malheureusement :eek:, m'échappe !

Pour mieux comprendre exécute successivement ces 2 macros :

Code:
Sub Macro1()
Application.DisplayAlerts = False
MsgBox "DisplayAlerts => " & Application.DisplayAlerts
End Sub

Sub Macro2()
MsgBox "DisplayAlerts => " & Application.DisplayAlerts
End Sub

Avec Application.ScreenUpdating c'est pareil, mais attention, quand on est sur des UserForms il faut parfois rafraîchir l'écran à la fin de la macro.

Enfin avec Application.EnableEvents = False il faut toujours remettre à True avant la fin de la macro.

A+
 

tototiti2008

XLDnaute Barbatruc
Re : Supprimer toutes les feuilles sauf la première

Bonjour à tous :)

Les remarques de job sont tout à fait vraies, mais comme j'éteins la lumière en sortant des toilettes, je préfère systématiquement réactiver ce que j'ai désactivé...
Un choix personnel que je n'impose à personne ;)
 

job75

XLDnaute Barbatruc
Re : Supprimer toutes les feuilles sauf la première

Bonjour tototiti :)

(...) j'éteins la lumière en sortant des toilettes

Bill a prévu des toilettes dont la lumière s'éteint automatiquement quand on sort :)

Une précision encore sur les macros d'un UserForm.

Quand il est ouvert en mode normal (modal), DisplayAlerts ou ScreenUpdating ne passent pas automatiquement à True tant que l'UserForm est ouvert.

En effet la macro où se trouve UserForm1.Show ne se termine qu'à la fermeture de l'UserForm.

A+
 

tototiti2008

XLDnaute Barbatruc
Re : Supprimer toutes les feuilles sauf la première

Re,

Bill a prévu des toilettes dont la lumière s'éteint automatiquement quand on sort :)

Me méfie de ces toilettes avec les lumières automatiques, j'ai connu des toilettes (de vraies, ce n'est pas une image) où si on ne remuait pas assez en étant sur le trône la lumière s'éteignait automatiquement :D
Mais encore une fois
Un choix personnel que je n'impose à personne ;)
 

DoubleZero

XLDnaute Barbatruc
Re : Supprimer toutes les feuilles sauf la première

Bonjour, le Fil, le Forum,

Le test proposé par job75 (post #17) ne me permet encore pas de comprendre la subtilité :confused:.

Je garderai donc ma coiffe d’âne(sse) :eek:.

Quoi qu’il en soit, je vous remercie, job75 :) et tototiti2008 :), pour vos réponses respectives.

A bientôt :D.
 

tototiti2008

XLDnaute Barbatruc
Re : Supprimer toutes les feuilles sauf la première

Re,

Le test proposé par job au message #17 est de coller le code des 2 Macros (Macro1 et Macro2) dans un module
Exécuter Macro1
On voit que Displayalerts a été désactivé
Exécuter Macro2
On voit que Displayalerts a été automatiquement réactivé à la fin de Macro1
 

Toug

XLDnaute Junior
Re : Supprimer toutes les feuilles sauf la première

Bonjour Toug,
Quand on supprime quelque chose (lignes, colonnes, feuilles, etc...) il est préférable de commencer par la fin en remontant (step - 1):
VB:
Sub SuprFeuille()
Application.DisplayAlerts = False
For i = ThisWorkbook.Sheets.Count To 2 Step -1
    Sheets(i).Delete
Next i
Application.DisplayAlerts = True
End Sub
Cordialement

Merci j'ai utilisé ton code, ça fonctionne nickel.
 

Discussions similaires

Réponses
7
Affichages
394