Supprimer plusieurs feuilles par macro avec condition

savourerlavie@hotmail.fr

XLDnaute Nouveau
Bonjour le forum, bonjour les forumeux,

En plein dans une macro, je peine encore sur des détails à la c..
Si quelqu'un peux jeter un coup d'oeil et a 5 minutes pour me répondre, je vous remercie d'avance.

mon probleme :
J'aimerais supprimer plusieurs feuilles dan mon classeur au travers d'une macro. donc j'ai créer une macro (avec mes pauvres connaissances en vba et ceux que j'ai pu trouver sur le forum)qui fonctionne mais qui me parait assez lourde et limitée. Voici le code :

Sub DetruitFeuille_Sauf()
Dim Feuille As Worksheet
On Error Resume Next
Application.DisplayAlerts = False
For Each Feuille In Worksheets
If (Feuille.Name <> "Entités") Then
If (Feuille.Name <> "Recap1") Then
If (Feuille.Name <> "Sinistres Cbt") Then
If (Feuille.Name <> "Parametrage") Then
If (Feuille.Name <> "Etat des sites") Then
If (Feuille.Name <> "Accueil") Then
If (Feuille.Name <> "RDC1") Then
If (Feuille.Name <> "Flotte") Then
If (Feuille.Name <> "Sinistres SARL") Then
Feuille.Delete
End If
End If
End If
End If
End If
End If
End If
End If
End If
Next
Application.DisplayAlerts = True
End Sub

j'aimerais savoir si il y a pas une methode plus simple pour lister toutes les feuilles a ne pas supprimer.

de plus, si possible, pouvoir les identifier non pas avec leur nom mais avec le numero de feuille interne (feuil1,feuil5...) ce qui m'evitera de modifier la macro si je modifie le nom des feuilles.

Merci a ceux qui me liront et encore plus à ceux qui répondront

A +
Jerome
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer plusieurs feuilles par macro avec condition

Bonsoir Jérome

modifies comme suit :

Code:
Sub DetruitFeuille_Sauf()
Dim Feuille As Worksheet
Application.DisplayAlerts = False
For Each Feuille In Worksheets
If Feuille.Name <> "Entités" And Feuille.Name <> "Recap1" And Feuille.Name <> "Sinistres Cbt" _
    And Feuille.Name <> "Parametrage" And Feuille.Name <> "Etat des sites" And Feuille.Name <> "Accueil" _
    And Feuille.Name <> "RDC1" And Feuille.Name <> "Flotte" And Feuille.Name <> "Sinistres SARL" Then
Feuille.Delete
End If
Next
Application.DisplayAlerts = True
End Sub

bonne soirée
@+
 

savourerlavie@hotmail.fr

XLDnaute Nouveau
Re : Supprimer plusieurs feuilles par macro avec condition

Bonjour pierrot93,

Merci beaucoup, ça m'evite deja tous les if et end if. lol. ce qui n'es pas negligeable dans la mesure ou il y a une dizaine de feuilles.
Au debut j'avais essayé avec or ( ... If Feuille.Name <> "Entités" or "Recap1" or "RDC1" ...) mais ça ne marchait pas.

par contr est ce qu'il est possible de faire la meme chose sans faire reference au nom de la feuille (Recap1,Recap2,RDC1,RDC2...) qui sera amené à changer mais a leur numero de feuille dans le vba (Recap1 = Feuil1,RDC1=Feuil10 ...)

Merci encore pour la premiere solution.

jerome
 

skoobi

XLDnaute Barbatruc
Re : Supprimer plusieurs feuilles par macro avec condition

Bonjour savourerlavie,

voici un exemple qui supprime toutes les feuilles sauf les 3 premières:

Code:
Sub DetruitFeuille_Sauf()
Dim n As Integer

On Error Resume Next
Application.DisplayAlerts = False
For n = 1 To Sheets.Count
    If n <> 1 And n <> 2 And n <> 3 Then Sheets(n).Delete
Next
Application.DisplayAlerts = True
End Sub

Edit: salut Pierrot :)
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer plusieurs feuilles par macro avec condition

Re

en utilisant la propriété "codename", enfin si j'ai bien compris, fais comme ceci :

Code:
If Feuille.CodeName <> "Feuil1"

@+

Edition salut Skoobi
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Supprimer plusieurs feuilles par macro avec condition

Re,

petite précision:
Si les feuilles à ne pas supprimer se suivent (de 1 à 3), tu peux faire comme ceci:

Code:
     If n > 3 Then Sheets(n).Delete

sinon comme cela (garder la 1, la 3 et la 5):

Code:
If n <> 1 And n <> 3 And n <> 5 Then Sheets(n).Delete
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer plusieurs feuilles par macro avec condition

Re

attention Skoobi:), le numéro d'index n'est pas figé, il évolue en fonction de la position de la feuille, et donc si tu en supprimes, cela change. Dans ce cas pour une boucle, commencer par la fin, avec un pas négatif :

Code:
for i = sheets.count to 1 step -1

@+
 

savourerlavie@hotmail.fr

XLDnaute Nouveau
Re : Supprimer plusieurs feuilles par macro avec condition

Merci a vous 2 : Pierrot93 et skoobi pour vos solutions.

j'ai testé ton code pierrot93 et ça me va parfaitement. ca fonctionne nickel.

Skoobi : je garde ton code aussi de coté car je pense qu'il pourra me servir une autre fois.

merci encore et bonne soirée.

jerome
 

skoobi

XLDnaute Barbatruc
Re : Supprimer plusieurs feuilles par macro avec condition

Re

attention Skoobi:), le numéro d'index n'est pas figé, il évolue en fonction de la position de la feuille, et donc si tu en supprimes, cela change. Dans ce cas pour une boucle, commencer par la fin, avec un pas négatif :

Code:
for i = sheets.count to 1 step -1
@+

oupppsss, tu as entièrement raison, erreur de débutant j'ai "presque" honte :eek:
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 181
Membres
103 152
dernier inscrit
Karibu