Suppression Feuille si Colonne ne contient pas

fouggy

XLDnaute Junior
Slt à tous,

Mon objectif est de supprimer toutes les feuilles d'un classeur ouvert dont aucune des cellules de la colonne A ne contient un certain mot.

J'ai essayé ce qui suit mais ça le fait pas. Merci de votre aide.


Sub SupprFeuilles()

Dim Ws As Worksheet

Application.DisplayAlerts = False

For Each Ws In Sheets
If Ws.Range("A1:A150") <> "BLABLA" Then
Ws.Delete
End If
Next Ws

Application.DisplayAlerts = True

End Sub
 

Paf

XLDnaute Barbatruc
Re : Suppression Feuille si Colonne ne contient pas

Bonjour

peut-être en remplaçant

If Ws.Range("A1:A150") <> "BLABLA" Then

par

If WorksheetFunction.CountIf(Ws.Range("A1:A150"), "BLABLA") = 0 Then
ou
If WorksheetFunction.CountIf(Ws.Range("A:A"), "BLABLA") = 0 Then
A+
 

DoubleZero

XLDnaute Barbatruc
Re : Suppression Feuille si Colonne ne contient pas

Bonjour, fouggy, le Forum,

Peut-être ainsi :

Code:
Option Explicit
Sub SupprFeuilles()
    Dim Ws As Worksheet
    Application.DisplayAlerts = False
    For Each Ws In Sheets
        With Ws
            If WorksheetFunction.CountIf(Ws.Range("a1:a150"), "BLABLA") = 0 Then Ws.Delete
        End With
    Next
    Application.DisplayAlerts = True
End Sub

A bientôt :)

P. S. : Bonjour, Paf.
 

fouggy

XLDnaute Junior
Re : Suppression Feuille si Colonne ne contient pas

Slt le Forum,

Merci à vous deux, Paf et DoubleZéros. Vos propositions fonctionnent au top.

Pourriez-vous m'expliquer pourquoi et comment on peut appliquer un code indiquant "= 0" et qui marche, lol, alors qu'on cherche à supprimer avec comme condition "<> de quelque chose" !!!

Merci à vous encore.
 

Paf

XLDnaute Barbatruc
Re : Suppression Feuille si Colonne ne contient pas

re bonjour fouggy et bonjour DoubleZero que je n'avais pas vu.

on ne peut pas l'écrire comme ça, mais If Ws.Range("A1:A150") <> "BLABLA" Then voudrait dire : si la plage A1:A150 ne contient pas de cellules ayant pour valeur "BLABLA" alors ...

Tandis que If WorksheetFunction.CountIf(Ws.Range("A1:A150"), "BLABLA") = 0 Then signifie : si dans la plage de cellules A1:A150, le nombre de cellule ayant pour valeur "BLABLA" est égal à zéro alors...


A+
 

Staple1600

XLDnaute Barbatruc
Re : Suppression Feuille si Colonne ne contient pas

Bonsoir à tous

Une petite modif en passant pour éviter un éventuel souci si présence de feuille Graphique

Code vb:
Option Explicit
Sub SupprFeuillesBIS()
Dim Ws As Worksheet
Application.DisplayAlerts = False
For Each Ws In WorkSheets'ici modif
With Ws
If WorksheetFunction.CountIf(Ws.Range("a1:a150"), "BLABLA") = 0 Then Ws.Delete
End With
Next
Application.DisplayAlerts = True
End Sub





Une variante pour flatter mes endives et en guise de berceuse pour tenter de m'endormir ;)
Code vb:
Sub SupprFeuillesTER()
Dim Ws As Worksheet
With Application
.DisplayAlerts = False
For Each Ws In Worksheets'ici modif
With Ws
On Error Resume Next
If Application.CountIf(.[A1:A150], "ACHTUNG!Baby") = 0 Then Ws.Delete
End With
Next
.DisplayAlerts = True
End With
End Sub









 
Dernière édition:

fouggy

XLDnaute Junior
Re : Suppression Feuille si Colonne ne contient pas

Merci Paf pour ton explication très claire. Cela ressemble de loin à un raisonnement par l'absurde, encore fallait-il y penser....

Est-ce que ce code supporte le Or ou And ?, Style :

If WorksheetFunction.CountIf(Ws.Range("A1:A150"), "BLABLA" Or "BLABLA2") = 0 Then

Merci de ta réponse.
 

fouggy

XLDnaute Junior
Re : Suppression Feuille si Colonne ne contient pas

Yooooooo,

Grand merci à vous pour vos réponses.

A DoubleZéro dont je vais tester au plus vite la proposition.

A Staple1600 que j'ai oublié de remercier précédemment mais à qui je dois avouer que la notion de feuille graphique m'échappe complètement.

A Job75 même si je n'ai pas compris la finesse de l'intervention.

Bonne nuit à tous et encore merci.
 

Paf

XLDnaute Barbatruc
Re : Suppression Feuille si Colonne ne contient pas

Bonjour à tous

une autre solution qui ne s'applique peut-être pas dans ce cas précis: utilisez le joker "*".

If WorksheetFunction.CountIf(Ws.Range("a1:a150"), "BLABLA*") = 0 Then Ws.Delete

comptera toutes les cellules commençant par "BLABLA" ( donc "BLABLA2" compris)

A+
 

Si...

XLDnaute Barbatruc
Re : Suppression Feuille si Colonne ne contient pas

salut

alerte, Si... ce n'est déjà fait, mauvais temps à prévoir ;)
Avec le Ou, toutes les feuilles dont la plage ne contient pas les 2 mots BLABLA et BLABLA2 seront supprimées.
Il y aura un message d'erreur si aucun onglet ne contient les 2 mots en même temps (dans la plage adressée) !
Tout classeur doit contenir au moins une feuille !

Pour contrôler (sans abuser des endives à la mode de Stapple :p) ...
 

Pièces jointes

  • Supprimer, oui mais pas tout.xls
    56 KB · Affichages: 32

Discussions similaires

Réponses
7
Affichages
334
Réponses
1
Affichages
177

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin