Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
VB : Supprimer toutes les feuilles sauf certaintes
Bonjour, je souhaiterai savoir comment en vba on peut supprimer toutes les feuilles sauf certaines, je vous ai mis le fichier en pièce jointe ou il faudra tout supprimer à l'exception de :
-Remise
-Equipement
-Client
-Reglement
-Proforma
-Recap.
Re : VB : Supprimer toutes les feuilles sauf certaintes
Bonjour
Voici le code; attention à la "casse" des noms; il faut respecter les minuscules et majuscules !
Code:
Sub Deletsh()
Dim K&
Application.ScreenUpdating = False
Application.DisplayAlerts = False
K = Sheets.Count
For K = 1 To K
If Sheets(K).Name Like "Remise" Then GoTo suite
If Sheets(K).Name Like "Equipement" Then GoTo suite
If Sheets(K).Name Like "client" Then GoTo suite
If Sheets(K).Name Like "Reglements" Then GoTo suite
If Sheets(K).Name Like "proforma" Then GoTo suite
If Sheets(K).Name Like "RECAP" Then GoTo suite
suite:
Sheets(K).Delete
Next
Application.DisplayAlerts = true
Cordialement
Flyonets
End Sub
Re : VB : Supprimer toutes les feuilles sauf certaintes
Bonsoir,
Voilà deux macros pour t'inspirer, la première montre comme supprimer des feuilles particulières, la deuxième comment supprimer toutes les feuilles sauf des feuilles données.
Sub Supprimer_Feuilles_Donnees()
wsh_toKill = Array("test", "test2")
Application.DisplayAlerts = False
For Each myVar In wsh_toKill
Sheets(myVar).Delete
Next myVar
End Sub
Sub Supprimer_Sauf_Feuilles_Donnees()
On Error Resume Next
Application.DisplayAlerts = False
wsh_toSave = Array("test", "test2")
Worksheets.Add
Worksheets.Add
For Each wsh In Worksheets
If Application.Match(wsh.Name, wsh_toSave, 0) = 0 Then wsh.Delete
Next wsh
End Sub
Re : VB : Supprimer toutes les feuilles sauf certaintes
Bonsoir le fil, bonsoir le forum,
Dans le même esprit que Flyonets mais je pense que son Suite: a été placé une ligne trop tôt...
Code:
Sub Macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
For Each o In Sheets 'boucle sur tous les onglets du classeur
Select Case o.Name 'agit en fonction du nom de l'onglet
Case "Remise" 'pour ce cas là pas d'action
Case "Equipement" 'pour ce cas là pas d'action
Case "Client" 'pour ce cas là pas d'action
Case "Reglement" 'pour ce cas là pas d'action
Case "Proforma" 'pour ce cas là pas d'action
Case "Recap" 'pour ce cas là pas d'action
Case Else 'pour tous les autres cas
Application.DisplayAlerts = False 'empêche les messages d'excel
o.Delete 'supprime l'onglet
Application.DisplayAlerts = True 'permet les message d'Excel
End Select 'fin de l'action en fonction de...
Next o 'prochain onglet de la boucle
End Sub
Re : VB : Supprimer toutes les feuilles sauf certaintes
Bonjour à tous,
une autre approche :
Code:
Option Explicit
Sub test()
Dim t() As Variant, ws As Worksheet
t = Array("Remise", "Equipement", "Client", "Reglement", "Proforma", "Recap")
Application.DisplayAlerts = False
For Each ws In Worksheets
If IsError(Application.Match(ws.Name, t, 0)) Then ws.Delete
Next ws
Application.DisplayAlerts = True
End Sub
Re : VB : Supprimer toutes les feuilles sauf certaintes
Bonjour,
J'aimerais rebondir sur cette discusion, certes qui date un peu, mais qui est l'objet de mes soucis actuels.
Tout comme la demande initiale, je souhaite supprimer toutes les feuilles de mon classeur sauf certaines.
Cependant, mon problème me semble un peu plus complexe puisque je ne connais pas les feuilles à conserver ; je ne peux donc pas les mettre en "dur" dans mon code.
Mes feuilles à conserver sont listées dans une feuille (ou fichier) à part et stockées dans une plage nommée (ex: mes_feuilles_a_conserver, via la formule suivante : =DECALER(Exe!$C$16;0;0;NBVAL(Exe!$C$16:$C$1048576);1)).
Malheureusement, je n'arrive pas à utiliser cette plage nommée dans un ARRAY ou un CASE de sorte de remplacer :
Array("feuille1", "feuille2", "feuille3") par Array(mes_feuilles_a_conserver) ou Case "feuille1", "feuille2", "feuille3" par Case mes_feuilles_a_conserver
Voici ci-dessous un exemple de code qui j'utilise et que j'essaie d'adapter à mon cas :
Code:
Public Sub SupprimeFeuille()
Dim Compteur As Integer, Nom As String
Set mes_feuilles_a_consever = Range("liste_feuilles")
Application.DisplayAlerts = False
For Compteur = Worksheets.Count To 1 Step -1
Nom = Sheets(Compteur).Name
Select Case Nom
' Case "feuille1", "feuille2", "feuille3"
Case mes_feuilles_a_consever
Case Else
Sheets(Compteur).Delete
End Select
Next Compteur
Application.DisplayAlerts = True
End Sub
J'ai bien essayé de contourner le problème en copiant mes feuilles à conserver dans un nouveau classeur (copier-coller en valeur, suppressions des connexions existantes) mais j'ai un soucis lors de la sauvegarde à cause d'images qui sont dans ces feuilles.
J'espère que vous aurez quelques idées à me faire tester.
Merci d'avance pour votre aide.
Cordalement
Re : VB : Supprimer toutes les feuilles sauf certaintes
Bonjour,
peut être comme ceci... non testé :
Code:
Option Explicit
Sub test()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In Worksheets
If IsError(Application.Match(ws.Name, Range("NomPlage"), 0)) Then ws.Delete
Next ws
Application.DisplayAlerts = True
End Sub
Re : VB : Supprimer toutes les feuilles sauf certaintes
Bonjour Pierrot93,
Merci pour cette 1e réponse.
Malheureusement, sauf erreur de ma part, cela ne fonctionne pas. Application.Match n'accepte pas ma plage nommée, mais seulement un paramètre de la forme array("feuille1","feuille1","feuille1"). Et je n'arrive pas à convertir ma plage sous cette forme.
Je continue mes investigations mais je commence à patauger !
Re : VB : Supprimer toutes les feuilles sauf certaintes
Re,
Code:
Option Explicit
Sub test()
Dim t() As Variant, ws As Worksheet
t = Range("NomPlage")
Application.DisplayAlerts = False
For Each ws In Worksheets
If IsError(Application.Match(ws.Name, t , 0)) Then ws.Delete
Next ws
Application.DisplayAlerts = True
End Sub
Re : VB : Supprimer toutes les feuilles sauf certaintes
Merci Pierrot, ce code fonctionne correctement.
Bon, j'ai quand même été obligé d'ajouter un On Error Resume Next à cause, me semble-t-il, de slicers qui trainent dans certaines feuilles (j'ai bien supprimé mes connexions, mais les slicers liés aux tcd restent). Enfin c'est pas grave.
DoubleZero, je n'ai pas exploré plus en détail ta solution ayant touvé mon bonheur par aileurs.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.