Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Suppression de feuils en gardant des feuilles selon une caractéristique.

  • Initiateur de la discussion Initiateur de la discussion Valoute
  • 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 !

V

Valoute

Guest
Bonjour,
je m'explique je cherche à supprimer toutes les feuilles correspondantes à un critère d'une cellule exemple pour garder les feuilles que j'ai besoins:
Code:
Sub Supression()
Dim Compteur As Integer, Nom As String
    Application.DisplayAlerts = False
    For Compteur = Worksheets.Count To 1 Step -1
        Nom = Sheets(Compteur).Name
        Select Case Nom
        Case Range("B3").Value, Range("B4").Value 'Etc...
           
        Case Else
            Sheets(Compteur).Delete
        End Select
    Next Compteur
    Application.DisplayAlerts = True
End Sub

Comment je peux faire pour qu'il comprenne que le nom de page à pas supprimer c'est en rapport avec une cellule.
 
Bonjour,
Ceci supprime toutes les feuilles sauf celles ou le nom est inscrit entre b3 et bx
VB:
Sub Supression()
  Dim sh As Worksheet
  Application.DisplayAlerts = False
  For Each sh In ThisWorkbook.Worksheets
  If IsError(Application.Match(sh.Name, Sheets("Insupprimable").Range("b3:b" & Sheets("Insupprimable").Cells(Rows.Count, "B").End(xlUp).Row), 0)) Then
  If sh.Name <> ActiveSheet.Name Then sh.Delete
  End If
  Next
  Application.DisplayAlerts = True
End Sub
 

Pièces jointes

Bonjour Valoute, Jacky67,

Ou aussi :
Code:
Sub Supression()
Dim d As Object, s As Object
Set d = CreateObject("Scripting.Dictionary")
For Each s In Sheets
  If Application.CountIf([B:B], s.Name) = 0 Then d(s.Name) = ""
Next
If d.Count = Sheets.Count Then MsgBox "Il faut conserver au moins une feuille !", 48: Exit Sub
If d.Count = 0 Then Exit Sub
Application.DisplayAlerts = False
Sheets(d.keys).Delete
End Sub
Bonne journée.
 
Dernière édition:
La macro fonctionne très bien c'est super cool, mais je suis exposé à un nouveau problème auquel je n'ai aucune compétence c'est comment faire pour y ajouter une selection plus manuel exemple: ajouter l'impossibilité de supprimer Sheets(1) et Sheets(2) en plus des feuilles situés en B.
 
Re,
Code:
Sub Supression()
Dim d As Object, s As Object
Set d = CreateObject("Scripting.Dictionary")
For Each s In Sheets
  If s.Index > 2 And Application.CountIf([B:B], s.Name) = 0 Then d(s.Name) = ""
Next
If d.Count = 0 Then Exit Sub
Application.DisplayAlerts = False
Sheets(d.keys).Delete
End Sub
Edit : j'ai aussi ajouté If d.Count = 0 Then Exit Sub dans ma macro du post #3.

Bonne fin de soirée.
 
Dernière édition:
Re,

De quel ajout parlez-vous ?

Je ne vois vraiment pas comment la macro du post #5 peut beuguer.

Edit : vous avez supprimé votre post #6... Pas glop ça 🙄

A+
 
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
848
Réponses
7
Affichages
958
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
878
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…