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.
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.
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
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
Mais encore une fois
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
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