Supprimer les onglets sauf le premier

  • Initiateur de la discussion Initiateur de la discussion RVL
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

RVL

XLDnaute Occasionnel
Bonjour au Forum,

J'aimerai savoir si il y a possibilité avec une macro, d'effacer l'ensemble des onglets d'un fichier, sauf le premier à gauche.

Je n'y arrive pas avec l'editeur de macro.
 
Re : Supprimer les onglets sauf le premier

Bonjour,

Tu peux, en te placant dans la seule feuille que tu veux conserver, lancer cette macro :
Code:
Sub SupprimerOnglets()
Application.Displayalerts = False
For Each sh In Activeworkbook.Worksheets 
    If sh.Name <> activesheet.name then 
        sh.Delete 
    End If 
Next sh
Application.Displayalerts = True 
End Sub

A +
🙂

Edit : Salut Pierrot93 🙂
 
Re : Supprimer les onglets sauf le premier

Bonjour à tous,
Une autre version que l'on peux lancer de n'importe où et même si des feuilles ont déjas été supprimées.
VB:
Sub Supr_Feuilles()
Dim i As Integer
Application.DisplayAlerts = False
For i = Sheets.Count To 2 Step -1
     If Sheets(i).Index = i Then Sheets(i).Delete
Next i
Application.DisplayAlerts = True
End Sub
Cordialement
 
Re : Supprimer les onglets sauf le premier

Bonjour à tous, le fil, le forum
Comme ma proposition me parrait un peu tarabiscotée, je reviens dessus :
VB:
Sub Suppr_Feuilles2()
Dim F As Worksheet
Application.DisplayAlerts = False
For Each F In Worksheets
    If F.Index <> 1 Then F.Delete
Next F
Application.DisplayAlerts = True
End Sub
Cordialement
 
Re : Supprimer les onglets sauf le premier

Bonjour à tous, Salut Efgé 🙂

Je ne te cacherai pas que comme, dans l'esprit des gens, le concept d'Index se confond trop souvent avec celui de Name, j'en suis arrivé à dire de placer son curseur dans la seule feuille que l'on souhaite conserver, avant lancer la macro de suppression de tous les autres onglets ...

A +
🙂
 
Re : Supprimer les onglets sauf le premier

Bonjour le fil, le forum,

Avec cette macro (dans un module ou dans la 1ère feuille) on supprime tout d'un coup :

Code:
Sub Supprime()
Dim Liste(), i
ReDim Liste(1 To Sheets.Count - 1)
For i = 1 To UBound(Liste)
  Liste(i) = Sheets(i + 1).Name
Next
Application.DisplayAlerts = False
Sheets(Liste).Delete
End Sub

A+
 
Re : Supprimer les onglets sauf le premier

Re,

Ah mais on peut même se passer des noms de feuilles (je découvre)...

Code:
Sub Supprime()
Dim Liste(), i
ReDim Liste(1 To Sheets.Count - 1)
For i = 1 To UBound(Liste)
  Liste(i) = i + 1 'liste des index
Next
Application.DisplayAlerts = False
Sheets(Liste).Delete
End Sub

A+
 
Re : Supprimer les onglets sauf le premier

Bonsoir le fil,

Juste pour montrer à JB que ses leçons servent à quelque chose :

Code:
Sub Supprime()
Dim Liste As Object, i
Set Liste = CreateObject("Scripting.Dictionary")
For i = 2 To Sheets.Count
  Liste(i) = i 'liste des index
Next
Application.DisplayAlerts = False
On Error Resume Next 's'il n'y a plus qu'une feuille...
Sheets(Liste.Items).Delete
End Sub

A+
 
Dernière édition:
Re : Supprimer les onglets sauf le premier

Bonjour à tous

Comme c'est un collector 😉, voici 3 macros qui me servent pour mon planning pour afficher, masquer, supprimer toutes ou partie des feuilles et remettre dans le bon ordre celles qu'on veut 🙂.

Code:
Sub A_Supprime_Feuilles_Inutiles()
Stop
Msgbox "attention les feuilles vont être supprimées (faire ctrl+pause pour arrêter)!"
Dim NOMFeuilleAgarder(100)
NOMFeuilleAgarder(1) = "Trouve"
NOMFeuilleAgarder(2) = "Scan sur"
NOMFeuilleAgarder(3) = "Param"
NOMFeuilleAgarder(4) = "BO"
'Sheets("Feuil3").Move After:=Sheets(4)
'delBO
ThisWorkbook.Activate
NF = ThisWorkbook.Sheets.Count
Sheets(NOMFeuilleAgarder(1)).Move After:=Sheets(NF)
Sheets(NOMFeuilleAgarder(2)).Move After:=Sheets(NF)
Sheets(NOMFeuilleAgarder(3)).Move After:=Sheets(NF)
Sheets(NOMFeuilleAgarder(4)).Move After:=Sheets(NF)
'Stop
For i = 1 To NF - 4'adapter sur le nombre de feuilles à garder
Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True
Next
Sheets(1).Activate
End Sub

Sub A_MAsque_Feuilles_Inutiles()
'Stop
On Error Resume Next
Dim NOMFeuilleAgarder(100)
NOMFeuilleAgarder(1) = "Planning2011"
'NOMFeuilleAgarder(2) = "Scan sur"
'NOMFeuilleAgarder(3) = "Param"
'NOMFeuilleAgarder(4) = "BO"
'Sheets("Feuil3").Move After:=Sheets(4)
'delBO
ThisWorkbook.Activate
'MsgBox ThisWorkbook.Name

NF = ThisWorkbook.Sheets.Count
Sheets(NOMFeuilleAgarder(1)).Move After:=Sheets(NF)
'Sheets(NOMFeuilleAgarder(2)).Move After:=Sheets(NF)
'Sheets(NOMFeuilleAgarder(3)).Move After:=Sheets(NF)
'Sheets(NOMFeuilleAgarder(4)).Move After:=Sheets(NF)
'Stop
For i = 1 To NF - 1'adapter sur le nombre de feuilles à garder
Application.DisplayAlerts = False
If Sheets(i).Visible = True Then Sheets(i).Visible = False
Application.DisplayAlerts = True
Next
Sheets(1).Activate
End Sub

Sub Affiche_Toutes_Feuilles()
Application.ScreenUpdating = False
nc = ActiveWorkbook.Sheets.Count
For n = 1 To nc
Sheets(n).Visible = True
Next
Application.ScreenUpdating = True
End Sub
 
Re : Supprimer les onglets sauf le premier

Bonjour à tous,

Encore une autre approche, pour le fun....
Code:
Option Explicit
Sub test()
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Select ws.Index <= 2
Next ws
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End Sub

bonne journée
@+
 
Re : Supprimer les onglets sauf le premier

Bonjour à tous

En reprenant le dernier code de Pierrot 🙂, voici 2 codes complémentaires si on a des feuilles masquées pour supprimer tout sauf la première feuille (test) ou tout sauf la feuille sélectionnée (test2).

Code:
Sub test()
'Supprime_Feuilles sauf la feuille en première position
Application.ScreenUpdating = False
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible = True
Next ws
For Each ws In Worksheets
ws.Select ws.Index <= 2
Next ws
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Sub test2()
'supprime_Feuilles_sauf_celle_sélectionnée
Application.ScreenUpdating = False
'Stop
Position = ActiveSheet.Index
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible = True
Next ws
'Stop
Sheets(Position).Move before:=Sheets(1)
For Each ws In Worksheets
ws.Select ws.Index <= 2
Next ws
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
217
Réponses
40
Affichages
2 K
Retour