VBA effacement de feuilles

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:confused:
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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+
 

francedemo

XLDnaute Occasionnel
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:

pierrejean

XLDnaute Barbatruc
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
 

francedemo

XLDnaute Occasionnel
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)

à+
 

job75

XLDnaute Barbatruc
Re : VBA effacement de feuilles

Re,

Pas compris grand'chose, francedemo :confused:

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+
 

francedemo

XLDnaute Occasionnel
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"...
 

job75

XLDnaute Barbatruc
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+
 

francedemo

XLDnaute Occasionnel
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é :eek:)
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:

Discussions similaires

Réponses
29
Affichages
1 K
Réponses
4
Affichages
332

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD