Supprimer tous les onglets Feuilxxx

travolta

XLDnaute Junior
Bonjour le forum,

j'aurais besoin d'une macro qui supprime de mon classeur, tous les onglets Feuil1, Feuil2 etc...
et bien entendu je ne sais pas faire :)

Merci d'avance à eux qui pourront m'aider :)
 

travolta

XLDnaute Junior
Merci Gilbert_RGI, mais en fait, je ne connais pas à l'avance les noms que vont avoir les feuilles.
J'utilise une macro qui crée une feuil temporaire à chque fois qu'elle s'exécute, et à chque fois je me retrouve avec 50 nouvelles feuilles, avec le numéro qui a incrémenté.
C'est pour ça que je voudrais pouvoir çà la fin de ma macro un bout de code qui supprime les n feuilles crées :)
 

travolta

XLDnaute Junior
Merci, par contre je ne veux supprimer que les feuilles qui s'appellent feuil1, feuil2, feuilxxx, toutes les autres feuilles du classeur je veux les garder :)

là j'ai l'impression que ta macro supprime toutes les feuilles quelquesoient leurs noms, hormis la 1ere feuille ?
 

gilbert_RGI

XLDnaute Barbatruc
une autre solution
dans la première feuille en colonne A tu mets le nom des feuilles que tu veux conserver
et tu lances ce programme

VB:
Sub SuppFeuill()
    For i = Sheets.Count To 2 Step -1
        test = 0
        For j = 1 To Range("A65535").End(xlUp).Row
            If Sheets(i).Name = Cells(j, 1) Then test = 1
        Next j
        If test = 0 Then
            Application.DisplayAlerts = False
            Sheets(i).Delete
        End If
    Next i
    Application.DisplayAlerts = True
End Sub
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,
Salut Gilbert,

Peux-tu essayer avec :

VB:
Sub SuppFeuill()
Dim x&
    For x = Sheets.Count To 2 Step -1
        Application.DisplayAlerts = False
            If Left(Sheets(x).Name, 5) = "Feuil" Then Sheets(x).Delete
            Application.DisplayAlerts = True
    Next x
End Sub

A+ à tous
 

job75

XLDnaute Barbatruc
Bonjour travolta, Gilbert, Jean-Claude,

Pour le fun :
Code:
Sub SuppFeuilles()
Dim s As Object, a$(), n&
For Each s In Sheets
  If s.Name Like "Feuil*" Then _
    ReDim Preserve a(n): a(n) = s.Name: n = n + 1
Next
If n And n < Sheets.Count Then _
  Application.DisplayAlerts = False: Sheets(a).Delete
End Sub
Bonne journée.
 

job75

XLDnaute Barbatruc
Re,

J'ai testé avec 1000 feuilles :
Code:
Sub SuppFeuilles()
Dim dur, s As Object, a$(), n&
dur = Timer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
For Each s In Sheets
  If s.Name Like "Feuil*" Then
    ReDim Preserve a(n)
    a(n) = s.Name
    n = n + 1
    If n Mod 20 = 0 Then Sheets(a).Delete: n = 0
  End If
Next
Sheets(a).Delete
MsgBox "Durée " & Format(Timer - dur, "0.00 \s")
End Sub
Chez moi (Win 10 - Excel 2013) la suppression par paquets de 20 est la plus rapide (5 secondes).

A+
 

Discussions similaires

  • Question
Microsoft 365 Recherche
Réponses
1
Affichages
474

Statistiques des forums

Discussions
312 299
Messages
2 086 993
Membres
103 422
dernier inscrit
victus5