VBA effacement de feuilles

  • Initiateur de la discussion Initiateur de la discussion Soleil11
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Soleil11

XLDnaute Occasionnel
Bonjour le forum,

Actuellement, j'utilise le code ci-dessous pour effacer mes feuilles les unes après les autres a partir de la feuille 1.

Existe-t-il une méthode/procédure plus simple sans utiliser une boucle "For X" et "next" ?


Public Sub test()

For x = 2 To Sheets.Count

Sheets(1).Next.Select

Application.DisplayAlerts = False

ActiveWindow.SelectedSheets.Delete

Application.DisplayAlerts = True

Next x

End Sub

Merci pour votre aide.

Soleil11😕
 
Re : VBA effacement de feuilles

Re,

Tu as bien pris soin de prendre un nouveau document avant de tester chaque macro (il faut donc créer un Module et les recopier) ?

Mais il y a des choses bizarres, car en re-testant je trouve :

- test1 (pierrejean) => 5,42 s, donc comme ce matin

- test (job75) => 5,79 s alors que ce matin c'était 4,51 s

A+
 
Re : VBA effacement de feuilles

Re,

Ah mais tu me fais des coups pendables pierrejean 🙂

Tu avais oublié
Code:
Application.ScreenUpdating = False
dans ma macro...

Et n'oublie pas de tester à chaque fois sur un nouveau document.

Re-teste et dis-moi.

A+
 
Re : VBA effacement de feuilles

bonjour à tous,

j'ai ajouté un "Timer" à la sub "ajoute" (au cas où)
ouverture fichier vierge
1er essai macro "ajoute" => 13.10938 s
macro "test1" => 13.8125
re
macro "test" => 21.33203

2ème essai "ajoute => 17.02344
"test1" =>17.53516
"test" => 22.8125

3ème essai idem en faisant "test" (23...) avant "test1"(21...)

il semble que la proc test erreur soit un poil plus longue

(j'ai un vieux portable avec un pentium M à 1.6 GHz...)
 
Dernière édition:
Re : VBA effacement de feuilles

Re

Effectivement le coup est bien pendable (je m'execute en me pendant au cou de ma douce).J'avais betement recopié a partir de #5

En prenant soin a chaque fois de partir sur un nouveau document:
pour toi: 1,64 seconde
pour moi : 1,90 seconde

Je crois que je vais arreter de chercher a reduire le temps d'execution qui s'etablit au pire a 2/1000 de seconde par feuille

Edit : Merci francedemo
 
Re : VBA effacement de feuilles

re à tous

non job, j'ai bien suivi la procédure :
créer nouveau fichier
copier le module
lancer "ajoute"
lancer "test1" => 16.5

créer nouveau fichier
copier module
lancer "ajoute"
lancer "test" => 14.92

(quand je dis à mon patron qu'il doit changer mon PC, j'ai raison, hein !!!)
je dois en avoir un neuf prochainement!!! (dans l'année quoi)

à+
 
Re : VBA effacement de feuilles

Re,

Pas compris grand'chose, francedemo 😕

Post #18 => test > test1 :

ouverture fichier vierge
1er essai macro "ajoute" => 13.10938 s
macro "test1" => 13.8125
re
macro "test" => 21.33203

Post #22 => test < test1 :

non job, j'ai bien suivi la procédure :
créer nouveau fichier
copier le module
lancer "ajoute"
lancer "test1" => 16.5

créer nouveau fichier
copier module
lancer "ajoute"
lancer "test" => 14.92

A+
 
Re : VBA effacement de feuilles

bonjour à tous,

j'ai jeté mon papier donc j'ai refais les essais :
macro utilisée "ajoute":
Code:
Sub Ajoute()
debut = Timer
Application.ScreenUpdating = False
For i = 1 To 1000
Sheets.Add After:=Sheets(Sheets.Count)
Next
MsgBox (Timer - debut)
End Sub

macro utilisée "test1"
Code:
Sub test1()
debut = Timer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
While Sheets.Count > 1
Sheets(Sheets.Count).Delete
Wend
MsgBox (Timer - debut)
End Sub

macro utilisée "test":
Code:
Sub test()
debut = Timer
On Error Resume Next
Application.DisplayAlerts = False
Application.DisplayAlerts = False
1 Sheets(2).Delete: If Err = 0 Then GoTo 1
MsgBox (Timer - debut)
End Sub

résultats :
création fichier 1
ajoute => 9.22
test1 => 8.67

création fichier 2
ajoute => 8.87
test => 8.09

création fichier 3
ajoute => 8.85
test1 => 8.64

création fichier 4
ajoute => 8.92
test => 8.01

donc "test" est un poil plus rapide que "test1"...
 
Re : VBA effacement de feuilles

Bonjour francedemo, le fil,

Quand on poste un message, faut avoir bien suivi le fil et vérifier ce qu'on écrit.

Au lieu de la macro que vous indiquez :

Code:
Sub test()
debut = Timer
On Error Resume Next
Application.DisplayAlerts = False
Application.DisplayAlerts = False
1 Sheets(2).Delete: If Err = 0 Then GoTo 1
MsgBox (Timer - debut)
End Sub

Bien sûr utiliser :

Code:
Sub test()
debut = Timer
On Error Resume Next
[COLOR="Red"]Application.ScreenUpdating= False[/COLOR]
Application.DisplayAlerts = False
1 Sheets(2).Delete: If Err = 0 Then GoTo 1
MsgBox (Timer - debut)
End Sub

A+
 
Re : VBA effacement de feuilles

désolé, je recommence le test =>

macro modifié (re désolé, j'ai fait ça au "saut du lit", pas bien réveillé 😱)
Code:
Sub test()
debut = Timer
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
1 Sheets(2).Delete: If Err = 0 Then GoTo 1
MsgBox (Timer - debut)
End Sub

là, c'est ok pour la macro

résultats :
classeur 1
ajoute => 8.16
test1 => 15.35

classeur 2
ajoute => 8.17
test => 14.2

classeur 3
ajoute => 8.16
test1 => 15.34

classeur 4
ajoute => 8.19
test => 14.25

les conclusions sont les mêmes

par contre, depuis tout à l'heure, j'ai bossé (un peu, je suis au boulot !!!), pourquoi j'ai autant de différence entre les tests de tout à l'heure et maintenant ???
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
775
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
449
Réponses
12
Affichages
883
Retour