Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

trouver les feuilles vides

8 réponses
Avatar
SylVBA
Bonsoir

Je cherche =E0 =E9crire 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

8 réponses

Avatar
jps
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" a écrit dans le message de news:


Un truc du style :

For Each S In Sheets
If ?????? Then
?????
End If
Next S
Avatar
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" a écrit dans le message de news:


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

Avatar
Hervé
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" a écrit dans le message de news:

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
Avatar
isabelle
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" a écrit dans le message de news:


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




Avatar
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 de s ?????
et surtout quelquechose qui ne fasse pas prendre la jaunisse aux lignes de
proc dans le VBE
jps

"SylVBA" a écrit dans le message de new s:


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



Avatar
Hervé
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" a écrit dans le message de news:

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" a écrit dans le message de news:


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



Avatar
isabelle
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

Avatar
jps
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" a écrit dans le message de news:

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" a écrit dans le message de news:


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