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

Sheets.count ou ThisWorkbook.Worksheets.Count

6 réponses
Avatar
Péhemme
Bonsoir à Tous,

Ahrrr !
Je ne sais même plus faire une boucle.
J'ai un fichier dans lequel j'ai 212 feuilles (sheets.count : 212) dont 209
à supprimer ; je conserve les 3 premières.
Que j'écrive l'une ou l'autre de ces boucles elles s'arrêtent après n'avoir
détruit que 102 feuilles (?).

For i = 4 To Sheets.Count
Sheets(i).Delete
Next i
ou :
For i = 4 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).Delete
'Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

reste 107...
relançant la macro :
2ème passage : reste 55
3ème passage : reste 29
4ème passage : reste 9
5ème passage : reste 6
6ème passage : reste 1
7ème passage : reste 0... ouf !

Où merde-je ?
Merci d'avance
Michel (W7 ; Excel 2010)

6 réponses

Avatar
Jacky
Hello,

Pour faire simple
Clique droit dans les onglets de feuille
- Sélectionner toutes les feuilles
- Touche CTRL appuyée, désélectionner les 3 feuilles a ne pas supprimer
- Clique droit ==>supprimer

--
Salutations
JJ


"Péhemme" a écrit dans le message de news: l99qcl$9ab$
Bonsoir à Tous,

Ahrrr !
Je ne sais même plus faire une boucle.
J'ai un fichier dans lequel j'ai 212 feuilles (sheets.count : 212) dont 209 à supprimer ; je conserve les 3
premières.
Que j'écrive l'une ou l'autre de ces boucles elles s'arrêtent après n'avoir détruit que 102 feuilles (?).

For i = 4 To Sheets.Count
Sheets(i).Delete
Next i
ou :
For i = 4 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).Delete
'Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

reste 107...
relançant la macro :
2ème passage : reste 55
3ème passage : reste 29
4ème passage : reste 9
5ème passage : reste 6
6ème passage : reste 1
7ème passage : reste 0... ouf !

Où merde-je ?
Merci d'avance
Michel (W7 ; Excel 2010)
Avatar
Péhemme
Re-bonsoir à Tous,
Eh bien mes amis il faut, à l'instar de la suppression des lignes, commencer
par la fin.
J'ai (enfin) trouvé la solution sur commentçamarche.net :

Application.DisplayAlerts = False
For Compteur = Worksheets.Count To 4 Step -1
Nom = Sheets(Compteur).Name
Select Case Nom
Case "ACCUEIL", "DATA", "Départ"

Case Else
Sheets(Compteur).Delete
End Select
Next Compteur
Application.DisplayAlerts = True

qui fonctionne parfaitement bien.
Le principal est d'arriver à ses fins.
Bonne soirée à Tous
Michel

"Péhemme" a écrit dans le message de groupe de discussion :
l99qcl$9ab$

Bonsoir à Tous,

Ahrrr !
Je ne sais même plus faire une boucle.
J'ai un fichier dans lequel j'ai 212 feuilles (sheets.count : 212) dont 209
à supprimer ; je conserve les 3 premières.
Que j'écrive l'une ou l'autre de ces boucles elles s'arrêtent après n'avoir
détruit que 102 feuilles (?).

For i = 4 To Sheets.Count
Sheets(i).Delete
Next i
ou :
For i = 4 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).Delete
'Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

reste 107...
relançant la macro :
2ème passage : reste 55
3ème passage : reste 29
4ème passage : reste 9
5ème passage : reste 6
6ème passage : reste 1
7ème passage : reste 0... ouf !

Où merde-je ?
Merci d'avance
Michel (W7 ; Excel 2010)
Avatar
Péhemme
Mon cher Jacky...
T'es un p'tit malin toi ! :-))
Mes 202 feuilles sont masquées.
Il faut que je les ouvre (une macro, je sais faire..).
Puis effectuer ta manip "à la main", sauf que ma première page ne se
déselecte pas (?) et est donc supprimée.
J'ai essayé en enregistrant la macro,... c'est d'une lecture assez
surprenante.
Maintenant que je suis sur la voie, je vais perfectionner la macro que j'ai
publiée et pense l'adopter.
Merci de ton aide
Bien amicalement
Michel


"Jacky" a écrit dans le message de groupe de discussion :
l99r5s$bfa$

Hello,

Pour faire simple
Clique droit dans les onglets de feuille
- Sélectionner toutes les feuilles
- Touche CTRL appuyée, désélectionner les 3 feuilles a ne pas supprimer
- Clique droit ==>supprimer

--
Salutations
JJ


"Péhemme" a écrit dans le message de news:
l99qcl$9ab$
Bonsoir à Tous,

Ahrrr !
Je ne sais même plus faire une boucle.
J'ai un fichier dans lequel j'ai 212 feuilles (sheets.count : 212) dont
209 à supprimer ; je conserve les 3 premières.
Que j'écrive l'une ou l'autre de ces boucles elles s'arrêtent après
n'avoir détruit que 102 feuilles (?).

For i = 4 To Sheets.Count
Sheets(i).Delete
Next i
ou :
For i = 4 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).Delete
'Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

reste 107...
relançant la macro :
2ème passage : reste 55
3ème passage : reste 29
4ème passage : reste 9
5ème passage : reste 6
6ème passage : reste 1
7ème passage : reste 0... ouf !

Où merde-je ?
Merci d'avance
Michel (W7 ; Excel 2010)
Avatar
Péhemme
N'empêche que la question se pose :
y a-t-il une limite fixée par Excel au nombre de page à supprimer par une
boucle For Each ?
ou :
étais-je imprécis dans la syntaxe de ma macro ?
Michel


"Jacky" a écrit dans le message de groupe de discussion :
l99r5s$bfa$

Hello,

Pour faire simple
Clique droit dans les onglets de feuille
- Sélectionner toutes les feuilles
- Touche CTRL appuyée, désélectionner les 3 feuilles a ne pas supprimer
- Clique droit ==>supprimer

--
Salutations
JJ


"Péhemme" a écrit dans le message de news:
l99qcl$9ab$
Bonsoir à Tous,

Ahrrr !
Je ne sais même plus faire une boucle.
J'ai un fichier dans lequel j'ai 212 feuilles (sheets.count : 212) dont
209 à supprimer ; je conserve les 3 premières.
Que j'écrive l'une ou l'autre de ces boucles elles s'arrêtent après
n'avoir détruit que 102 feuilles (?).

For i = 4 To Sheets.Count
Sheets(i).Delete
Next i
ou :
For i = 4 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).Delete
'Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

reste 107...
relançant la macro :
2ème passage : reste 55
3ème passage : reste 29
4ème passage : reste 9
5ème passage : reste 6
6ème passage : reste 1
7ème passage : reste 0... ouf !

Où merde-je ?
Merci d'avance
Michel (W7 ; Excel 2010)
Avatar
Jacky
RE...
Ceci fonctionne chez moi sans problèmes ni restriction du nombre de feuilles
'----------------
Sub JJ()
Dim sh As Worksheet
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> "ACCUEIL" And sh.Name <> "DATA" And sh.Name <> "Départ" Then
sh.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
'----------------
--
Salutations
JJ


"Péhemme" a écrit dans le message de news: l99sc2$eho$
Mon cher Jacky...
T'es un p'tit malin toi ! :-))
Mes 202 feuilles sont masquées.
Il faut que je les ouvre (une macro, je sais faire..).
Puis effectuer ta manip "à la main", sauf que ma première page ne se déselecte pas (?) et est donc
supprimée.
J'ai essayé en enregistrant la macro,... c'est d'une lecture assez surprenante.
Maintenant que je suis sur la voie, je vais perfectionner la macro que j'ai publiée et pense l'adopter.
Merci de ton aide
Bien amicalement
Michel


"Jacky" a écrit dans le message de groupe de discussion : l99r5s$bfa$

Hello,

Pour faire simple
Clique droit dans les onglets de feuille
- Sélectionner toutes les feuilles
- Touche CTRL appuyée, désélectionner les 3 feuilles a ne pas supprimer
- Clique droit ==>supprimer

--
Salutations
JJ


"Péhemme" a écrit dans le message de news: l99qcl$9ab$
Bonsoir à Tous,

Ahrrr !
Je ne sais même plus faire une boucle.
J'ai un fichier dans lequel j'ai 212 feuilles (sheets.count : 212) dont 209 à supprimer ; je conserve les 3
premières.
Que j'écrive l'une ou l'autre de ces boucles elles s'arrêtent après n'avoir détruit que 102 feuilles (?).

For i = 4 To Sheets.Count
Sheets(i).Delete
Next i
ou :
For i = 4 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).Delete
'Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

reste 107...
relançant la macro :
2ème passage : reste 55
3ème passage : reste 29
4ème passage : reste 9
5ème passage : reste 6
6ème passage : reste 1
7ème passage : reste 0... ouf !

Où merde-je ?
Merci d'avance
Michel (W7 ; Excel 2010)



Avatar
Péhemme
Oui Jacky, cela fonctionne parfaitement.
Ce qui est pour moi surprenant car j'avais également testé cette approche et
la macro (dé)bloquait.
Malheureusement, je viens de détruire mes fichiers de tests et ne peux plus
comparer avec mes tentatives de tout ordre.
De mémoire, je crois en effet que j'écrivais "or" au lieu de "and".
Mârci beaucoup.
Bien amicalement
Michel


"Jacky" a écrit dans le message de groupe de discussion :
l99ujn$kio$

RE...
Ceci fonctionne chez moi sans problèmes ni restriction du nombre de feuilles
'----------------
Sub JJ()
Dim sh As Worksheet
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> "ACCUEIL" And sh.Name <> "DATA" And sh.Name <> "Départ"
Then
sh.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
'----------------
--
Salutations
JJ


"Péhemme" a écrit dans le message de news:
l99sc2$eho$
Mon cher Jacky...
T'es un p'tit malin toi ! :-))
Mes 202 feuilles sont masquées.
Il faut que je les ouvre (une macro, je sais faire..).
Puis effectuer ta manip "à la main", sauf que ma première page ne se
déselecte pas (?) et est donc supprimée.
J'ai essayé en enregistrant la macro,... c'est d'une lecture assez
surprenante.
Maintenant que je suis sur la voie, je vais perfectionner la macro que
j'ai publiée et pense l'adopter.
Merci de ton aide
Bien amicalement
Michel


"Jacky" a écrit dans le message de groupe de discussion :
l99r5s$bfa$

Hello,

Pour faire simple
Clique droit dans les onglets de feuille
- Sélectionner toutes les feuilles
- Touche CTRL appuyée, désélectionner les 3 feuilles a ne pas supprimer
- Clique droit ==>supprimer

--
Salutations
JJ


"Péhemme" a écrit dans le message de news:
l99qcl$9ab$
Bonsoir à Tous,

Ahrrr !
Je ne sais même plus faire une boucle.
J'ai un fichier dans lequel j'ai 212 feuilles (sheets.count : 212) dont
209 à supprimer ; je conserve les 3 premières.
Que j'écrive l'une ou l'autre de ces boucles elles s'arrêtent après
n'avoir détruit que 102 feuilles (?).

For i = 4 To Sheets.Count
Sheets(i).Delete
Next i
ou :
For i = 4 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).Delete
'Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

reste 107...
relançant la macro :
2ème passage : reste 55
3ème passage : reste 29
4ème passage : reste 9
5ème passage : reste 6
6ème passage : reste 1
7ème passage : reste 0... ouf !

Où merde-je ?
Merci d'avance
Michel (W7 ; Excel 2010)