Lenteur

Le
PascalBar
Bonjour à tous,

Sous 2003
J'ai deux classeurs un Bilan xls et un data xls.
Sur le workbook_open de bilan j'ai cette procédure

Private Sub Workbook_Open()
Dim Dest, Srce As Workbook

On Error Resume Next

Application.ScreenUpdating = False

Application.DisplayAlerts = False


Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2


Srce.Close

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Chargée de récupérer les données de data xls et de les coller dans la
feuille data de bilan.
Cela fonctionne mais j'attends 15 secondes avant de rependre la main
Je ne comprends pas où je merdouille.
sur data.xls la feuille à copier est nommée dynamiquement sur 5200 ligne
et 8 colonnes.

Des idées?
Merci de vos contributions
Pascal
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #20805271
Bonjour
Dans vos feuilles, n'y aurait-il pas des calculs qui se font, refont, refont
.....à chaque fois?
Ceci dit, qu'est-ce que 15 secondes? Le temps de respirer un grand coup,
bien à fond...et c'est fait. -)

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"PascalBar" %23H%
Bonjour à tous,

Sous 2003
J'ai deux classeurs un Bilan xls et un data xls.
Sur le workbook_open de bilan j'ai cette procédure

Private Sub Workbook_Open()
Dim Dest, Srce As Workbook

On Error Resume Next

Application.ScreenUpdating = False

Application.DisplayAlerts = False


Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2


Srce.Close

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Chargée de récupérer les données de data xls et de les coller dans la
feuille data de bilan.
Cela fonctionne mais j'attends 15 secondes avant de rependre la main
Je ne comprends pas où je merdouille.
sur data.xls la feuille à copier est nommée dynamiquement sur 5200 ligne
et 8 colonnes.

Des idées?
Merci de vos contributions
Pascal


michdenis
Le #20805491
Bonjour,

Essaie comme ceci :

En désactivant les procédures évènementielles.

'----------------------------------------
Private Sub Workbook_Open()
Dim Dest, Srce As Workbook
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Application.EnableEvents = False

Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2
Srce.Close

Application.EnableEvents = True

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
'----------------------------------------





"PascalBar" #H#
Bonjour à tous,

Sous 2003
J'ai deux classeurs un Bilan xls et un data xls.
Sur le workbook_open de bilan j'ai cette procédure

Private Sub Workbook_Open()
Dim Dest, Srce As Workbook

On Error Resume Next

Application.ScreenUpdating = False

Application.DisplayAlerts = False


Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2


Srce.Close

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Chargée de récupérer les données de data xls et de les coller dans la
feuille data de bilan.
Cela fonctionne mais j'attends 15 secondes avant de rependre la main
Je ne comprends pas où je merdouille.
sur data.xls la feuille à copier est nommée dynamiquement sur 5200 ligne
et 8 colonnes.

Des idées?
Merci de vos contributions
Pascal
PascalBar
Le #20805951
michdenis a écrit :
Bonjour,

Essaie comme ceci :

En désactivant les procédures évènementielles.

'----------------------------------------
Private Sub Workbook_Open()
Dim Dest, Srce As Workbook
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Application.EnableEvents = False

Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2
Srce.Close

Application.EnableEvents = True

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
'----------------------------------------





"PascalBar" #H#
Bonjour à tous,

Sous 2003
J'ai deux classeurs un Bilan xls et un data xls.
Sur le workbook_open de bilan j'ai cette procédure

Private Sub Workbook_Open()
Dim Dest, Srce As Workbook

On Error Resume Next

Application.ScreenUpdating = False

Application.DisplayAlerts = False


Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2


Srce.Close

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Chargée de récupérer les données de data xls et de les coller dans la
feuille data de bilan.
Cela fonctionne mais j'attends 15 secondes avant de rependre la main
Je ne comprends pas où je merdouille.
sur data.xls la feuille à copier est nommée dynamiquement sur 5200 ligne
et 8 colonnes.

Des idées?
Merci de vos contributions
Pascal



merci MichDenis,
Pas beaucoup de changements.
Cela doit provenir de mes zones nommées mais pourtant de Bilan à Data
elles sont de tailles identiques, dynamiques.
Corona
Le #20806161
Bonsoir,
Si tu as beaucoup de formules et surtout des fonctions volatiles telles
que DECALER, INDIRECT etc ... cela peut prendre quelques secondes
Ajoute ceci en début de procédure, par exemple juste après
Application.ScreenUpdating = False

mRecalc = Application.Calculation
Application.Calculation = xlCalculationManual
' Instructions
' ....
' A la fin des instructions rétablissement du mode recalcul d'origine
Application.Calculation = mRecalc

Philippe

PascalBar a écrit :
michdenis a écrit :
Bonjour,

Essaie comme ceci :

En désactivant les procédures évènementielles.

'----------------------------------------
Private Sub Workbook_Open()
Dim Dest, Srce As Workbook
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Application.EnableEvents = False

Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2
Srce.Close

Application.EnableEvents = True

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
'----------------------------------------





"PascalBar" discussion : #H#
Bonjour à tous,

Sous 2003
J'ai deux classeurs un Bilan xls et un data xls.
Sur le workbook_open de bilan j'ai cette procédure

Private Sub Workbook_Open()
Dim Dest, Srce As Workbook

On Error Resume Next

Application.ScreenUpdating = False

Application.DisplayAlerts = False


Set Dest = Sheets("data").[Tablo]
Set Srce = Workbooks.Open(ThisWorkbook.Path &
Application.PathSeparator & "data_analyse.xls")
[Tablo2].Copy Dest2


Srce.Close

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Chargée de récupérer les données de data xls et de les coller dans la
feuille data de bilan.
Cela fonctionne mais j'attends 15 secondes avant de rependre la main
Je ne comprends pas où je merdouille.
sur data.xls la feuille à copier est nommée dynamiquement sur 5200 ligne
et 8 colonnes.

Des idées?
Merci de vos contributions
Pascal


merci MichDenis,
Pas beaucoup de changements.
Cela doit provenir de mes zones nommées mais pourtant de Bilan à Data
elles sont de tailles identiques, dynamiques.


Publicité
Poster une réponse
Anonyme