trouver les feuilles vides

Le
SylVBA
Bonsoir

Je cherche à écrire un code qui chercherai dans toutes les feuilles
d'un classeur, celles qui sont vides et les supprimeraient

Attention il y a des feuilles avec des graphiques, et les noms sont
variables ainsi que le nombre de feuille par classeur

Que me proposez vous ?

Bien merci d'avance

Sylvie

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jps
Le #4673221
ce "truc" me fait te dire, sylvie, que nous sommes sensiblement du même
niveau, notre problème restant de mettre quelquechose à la place des ?????
et surtout quelquechose qui ne fasse pas prendre la jaunisse aux lignes de
proc dans le VBE
jps

"SylVBA"

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S
SylVBA
Le #4673061
On 23 août, 18:58, "jps" wrote:
ce "truc" me fait te dire, sylvie, que nous sommes sensiblement du même
niveau, notre problème restant de mettre quelquechose à la place des ?????
et surtout quelquechose qui ne fasse pas prendre la jaunisse aux lignes de
proc dans le VBE
jps

"SylVBA"

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S


Merci jps

Je connais tes reponses sur ce forum tu dois etre meilleur que moi ...

Anyway j'ai avancé mais cela ne marche pas avec les feuilles graph.
par exemple

For Each S In Sheets
S.Select
If Application.CountA([Cells]) = 0 Then
MsgBox "Vide"
Else
MsgBox "Non vide"
End If
Next S

Merci aux contributeurs

bien à vous tous

Sylvie

Hervé
Le #4673041
Bonsoir Sylvie,
Il te faut ouvrir les classeurs concernés et exécuter la proc ci-dessous :

Sub SupprimerFeuilles()
Dim Cl As Workbook
Dim Fe As Worksheet
Dim Plage As Range

For Each Cl In Workbooks
For Each Fe In Cl.Worksheets
'une erreur est générée si la feuille est vide
'sachant tout de même qu'il restera au moins
'une feuille dans le classeur si elles sont
'toutes vides
On Error Resume Next
With Fe
Set Plage = .Range(.Cells(1, 1), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
If Err.Number <> 0 Then
Application.DisplayAlerts = False
Fe.Delete
Application.DisplayAlerts = True
End If
Next Fe
Next Cl

Set Plage = Nothing
Set Fe = Nothing
Set Cl = Nothing
End Sub

Hervé

"SylVBA"
Bonsoir

Je cherche à écrire un code qui chercherai dans toutes les feuilles
d'un classeur, celles qui sont vides et les supprimeraient

Attention il y a des feuilles avec des graphiques, et les noms sont
variables ainsi que le nombre de feuille par classeur

Que me proposez vous ?

Bien merci d'avance

Sylvie

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S
isabelle
Le #4673031
bonjour Sylvie,

remplace
For Each S In Sheets
par
For Each S In WorkSheets

pour éviter les feuilles graph

isabelle

On 23 août, 18:58, "jps" wrote:

ce "truc" me fait te dire, sylvie, que nous sommes sensiblement du même
niveau, notre problème restant de mettre quelquechose à la place des ?????
et surtout quelquechose qui ne fasse pas prendre la jaunisse aux lignes de
proc dans le VBE
jps

"SylVBA"

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S



Merci jps

Je connais tes reponses sur ce forum tu dois etre meilleur que moi ...

Anyway j'ai avancé mais cela ne marche pas avec les feuilles graph.
par exemple

For Each S In Sheets
S.Select
If Application.CountA([Cells]) = 0 Then
MsgBox "Vide"
Else
MsgBox "Non vide"
End If
Next S

Merci aux contributeurs

bien à vous tous

Sylvie




SylVBA
Le #4672921
On 23 août, 19:55, isabelle wrote:
bonjour Sylvie,

remplace
For Each S In Sheets
par
For Each S In WorkSheets

pour éviter les feuilles graph

isabelle




On 23 août, 18:58, "jps" wrote:

ce "truc" me fait te dire, sylvie, que nous sommes sensiblement du mê me
niveau, notre problème restant de mettre quelquechose à la place de s ?????
et surtout quelquechose qui ne fasse pas prendre la jaunisse aux lignes de
proc dans le VBE
jps

"SylVBA"

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S


Merci jps

Je connais tes reponses sur ce forum tu dois etre meilleur que moi ...

Anyway j'ai avancé mais cela ne marche pas avec les feuilles graph.
par exemple

For Each S In Sheets
S.Select
If Application.CountA([Cells]) = 0 Then
MsgBox "Vide"
Else
MsgBox "Non vide"
End If
Next S

Merci aux contributeurs

bien à vous tous

Sylvie- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Merci à toutes et tous,

je teste demain et je reviens

Hervé, je ne vois pas le test pour savoir si la feuille est vide ?

Isabelle, je ne connaissais pas le différence entre sheets et
Worksheets

Bien à vous

Sylvie



Hervé
Le #4672901
Re,
Hé bien le test est ici :

On Error Resume Next
With Fe
Set Plage = .Range(.Cells(1, 1), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With

Une recherche de plage est effectuée (Set Plage...), pour cela, il faut
qu'il y est au moins une cellule non vide dans la feuille, si ce n'est pas
le cas, une erreur est générée, il suffit alors simplement de gérer cette
dernière (If Err.Number <> 0 Then)

Hervé.

"SylVBA"
On 23 août, 19:55, isabelle wrote:
bonjour Sylvie,

remplace
For Each S In Sheets
par
For Each S In WorkSheets

pour éviter les feuilles graph

isabelle




On 23 août, 18:58, "jps" wrote:

ce "truc" me fait te dire, sylvie, que nous sommes sensiblement du même
niveau, notre problème restant de mettre quelquechose à la place des
?????



et surtout quelquechose qui ne fasse pas prendre la jaunisse aux lignes
de



proc dans le VBE
jps

"SylVBA"

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S


Merci jps

Je connais tes reponses sur ce forum tu dois etre meilleur que moi ...

Anyway j'ai avancé mais cela ne marche pas avec les feuilles graph.
par exemple

For Each S In Sheets
S.Select
If Application.CountA([Cells]) = 0 Then
MsgBox "Vide"
Else
MsgBox "Non vide"
End If
Next S

Merci aux contributeurs

bien à vous tous

Sylvie- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Merci à toutes et tous,

je teste demain et je reviens

Hervé, je ne vois pas le test pour savoir si la feuille est vide ?

Isabelle, je ne connaissais pas le différence entre sheets et
Worksheets

Bien à vous

Sylvie



isabelle
Le #4672841
re bonjour Sylvie,


Isabelle, je ne connaissais pas le différence entre sheets et
Worksheets



la collection Sheets englobe tous les objets :
Feuille de calcul, Graph, feuille macro Ms Excel4, feuille intl Ms Excel4, boite de dialog MS Excel 5.0.

la collection WorkSheets englobe seulement les objets Feuille de calcul

isabelle

jps
Le #4669891
bonjour sylvie
anyway, comme tu dis, tu es tombée sur deux bons avec isabelle et hervé
moi, je voulais juste te dire d'avoir l'incommensurable gentillesse de
répondre au-dessus des réponses de la ficelle et non pas en-dessous
je sais, je sais, c'est ce qui se pratique sur d'autres foris (merci de
m'avoir permis de placer ce pluriel) mais ici, la coutume veut que ce soit
au-dessus
bonne journée
jps

"SylVBA"
On 23 août, 18:58, "jps" wrote:
ce "truc" me fait te dire, sylvie, que nous sommes sensiblement du même
niveau, notre problème restant de mettre quelquechose à la place des ?????
et surtout quelquechose qui ne fasse pas prendre la jaunisse aux lignes de
proc dans le VBE
jps

"SylVBA"

Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S


Merci jps

Je connais tes reponses sur ce forum tu dois etre meilleur que moi ...

Anyway j'ai avancé mais cela ne marche pas avec les feuilles graph.
par exemple

For Each S In Sheets
S.Select
If Application.CountA([Cells]) = 0 Then
MsgBox "Vide"
Else
MsgBox "Non vide"
End If
Next S

Merci aux contributeurs

bien à vous tous

Sylvie

Publicité
Poster une réponse
Anonyme