OVH Cloud OVH Cloud

Lenteur

6 réponses
Avatar
pb
Bonjour,
J'ai besoin de vos lumières.
Sur un XP SP3 avec Intel Xeon et 4 go de Ram, je ne comprends pas pourquoi
ce bout de code est lent.

Sub col()
Dim nb_col As Integer
Range("tablo").Select
nb_col = 13
Columns("A:A").Select
For i = 1 To nb_col
Selection.Insert Shift:=xlToRight
Next
End Sub

Normalement cela devrait-être instanné non?
Merci
Pascal

6 réponses

Avatar
LSteph
Bonjour,

'Eviter les rarement utiles select

Sub col()
Application.ScreenUpdating = False
[a:m].Insert Shift:=xlToRight
End Sub



'''''''''


Nota:
4Go ne servent pas à + que si tu en avais un peu moins...
pour VISTA:
http://support.microsoft.com/kb/929605/fr

pour XP:
http://support.microsoft.com/kb/888137/fr )


'lSteph



pb a écrit :
Bonjour,
J'ai besoin de vos lumières.
Sur un XP SP3 avec Intel Xeon et 4 go de Ram, je ne comprends pas pourquoi
ce bout de code est lent.

Sub col()
Dim nb_col As Integer
Range("tablo").Select
nb_col = 13
Columns("A:A").Select
For i = 1 To nb_col
Selection.Insert Shift:=xlToRight
Next
End Sub

Normalement cela devrait-être instanné non?
Merci
Pascal




Avatar
pb
Merci c'est super mieux.
"LSteph" a écrit dans le message de news:

Bonjour,

'Eviter les rarement utiles select

Sub col()
Application.ScreenUpdating = False
[a:m].Insert Shift:=xlToRight
End Sub



'''''''''


Nota:
4Go ne servent pas à + que si tu en avais un peu moins...
pour VISTA:
http://support.microsoft.com/kb/929605/fr

pour XP:
http://support.microsoft.com/kb/888137/fr )


'lSteph



pb a écrit :
Bonjour,
J'ai besoin de vos lumières.
Sur un XP SP3 avec Intel Xeon et 4 go de Ram, je ne comprends pas
pourquoi ce bout de code est lent.

Sub col()
Dim nb_col As Integer
Range("tablo").Select
nb_col = 13
Columns("A:A").Select
For i = 1 To nb_col
Selection.Insert Shift:=xlToRight
Next
End Sub

Normalement cela devrait-être instanné non?
Merci
Pascal





Avatar
Philippe.R
Bonjour,
La recherche extrême de la concision te perdra ;o)))

Sub col()
Application.ScreenUpdating = False
[a:m].Insert Shift:=xlToRight
Application.ScreenUpdating = True
End Sub

--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"LSteph" a écrit dans le message de
news:
Bonjour,

'Eviter les rarement utiles select

Sub col()
Application.ScreenUpdating = False
[a:m].Insert Shift:=xlToRight
End Sub



'''''''''


Nota:
4Go ne servent pas à + que si tu en avais un peu moins...
pour VISTA:
http://support.microsoft.com/kb/929605/fr

pour XP:
http://support.microsoft.com/kb/888137/fr )


'lSteph



pb a écrit :
Bonjour,
J'ai besoin de vos lumières.
Sur un XP SP3 avec Intel Xeon et 4 go de Ram, je ne comprends pas
pourquoi ce bout de code est lent.

Sub col()
Dim nb_col As Integer
Range("tablo").Select
nb_col = 13
Columns("A:A").Select
For i = 1 To nb_col
Selection.Insert Shift:=xlToRight
Next
End Sub

Normalement cela devrait-être instanné non?
Merci
Pascal




Avatar
LSteph
Bonjour,

On s'y trouve dès le end sub (voir exemple plus bas)
particularité de ScreenUpdating = False

qui n'a plus besoin d'être remis à true depuis un nombre conséquent de
versions contrairement à ce que dit toujours l'aide.
mais
je reconnais ton sens de la pédagogie car pour des versions plus
anciennes c'était indispensable
et comme hélas d'autres propriétés comme enableevents ou displayalerts
nécessitent effectivement qu'on remette à true, il vaut mieux s'en tenir
à une bonne habitude.
J'espère donc mériter toujours la bénédiction de Mgr Abile

;-)
--
lSteph

A tester consécutivement:

Sub azzz()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To 10
[a:a].Cells(i) = "voici"
Application.Wait Now + TimeValue("00:00:01")
Next
End Sub

Sub bzzz()
Dim i As Long

For i = 1 To 10
[b:b].Cells(i) = "voici"
Application.Wait Now + TimeValue("00:00:01")
Next
End Sub


Philippe.R a écrit :
Bonjour,
La recherche extrême de la concision te perdra ;o)))

Sub col()
Application.ScreenUpdating = False
[a:m].Insert Shift:=xlToRight
Application.ScreenUpdating = True
End Sub



Avatar
Mgr.Abile
Bonjour mon fils,

Il y a effectivement de bonnes habitudes à conserver, qu'il s'agisse de
déclarer ou de rendre dans leur état initial les variables qu'on emprunte,
ou bien de porter sa mitre quand les circonstances l'imposent ; c'est le
moindre des respects qu'on doit à son prochain et je vous en sait un
fervent.
--
News://news.microsoft.com/microsoft.public.fr.excel
Allez en paix
T.Abile
"LSteph" a écrit dans le message de
news:uzh$
Bonjour,

On s'y trouve dès le end sub (voir exemple plus bas)
particularité de ScreenUpdating = False

qui n'a plus besoin d'être remis à true depuis un nombre conséquent de
versions contrairement à ce que dit toujours l'aide.
mais
je reconnais ton sens de la pédagogie car pour des versions plus anciennes
c'était indispensable
et comme hélas d'autres propriétés comme enableevents ou displayalerts
nécessitent effectivement qu'on remette à true, il vaut mieux s'en tenir à
une bonne habitude.
J'espère donc mériter toujours la bénédiction de Mgr Abile

;-)
--
lSteph

A tester consécutivement:

Sub azzz()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To 10
[a:a].Cells(i) = "voici"
Application.Wait Now + TimeValue("00:00:01")
Next
End Sub

Sub bzzz()
Dim i As Long

For i = 1 To 10
[b:b].Cells(i) = "voici"
Application.Wait Now + TimeValue("00:00:01")
Next
End Sub


Philippe.R a écrit :
Bonjour,
La recherche extrême de la concision te perdra ;o)))

Sub col()
Application.ScreenUpdating = False
[a:m].Insert Shift:=xlToRight
Application.ScreenUpdating = True
End Sub





Avatar
LSteph
;-)

Mgr.Abile a écrit :
Bonjour mon fils,

Il y a effectivement de bonnes habitudes à conserver, qu'il s'agisse de
déclarer ou de rendre dans leur état initial les variables qu'on
emprunte, ou bien de porter sa mitre quand les circonstances l'imposent
; c'est le moindre des respects qu'on doit à son prochain et je vous en
sait un fervent.