Macro plus lente avec un format de fichier xlsm

Cydor007

XLDnaute Occasionnel
Bonjour,

J'ai changé de format d'extension de ma base de données sur Excel 2007.
Je passe de Base de donnée .xls à Base de donnée.xlsm.
J'ai fait tout simplement ce changement pour pouvoir utiliser toute la puissance des macros dans Excel.
En réalité, quand j'ai programmé un nouvel outil, Excel m'a demandé de changer l'extension car j'allais perdre mon programme. Donc, je n'ai pas eu le choix de choisir une extension qui prend en charge les macros.

Depuis ce changement, tous les outils s'exécutent plus lentement, beaucoup plus lentement.
Voici un exemple concret d'un outil:

olumns("M:M").Select
Selection.Copy
Columns("T:T").Select
ActiveSheet.Paste
Columns("T:T").Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Registre").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Registre").Sort.SortFields.Add Key:=Range("T1"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Registre").Sort
.SetRange Range("T1:T50000")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("T2").Select
Selection.Copy
Range("R1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("S4").Select
ActiveCell.FormulaR1C1 = "=LARGE(C[1],1)"
Range("S4").Select
Selection.Copy
Range("S1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("S4").Select
Selection.ClearContents
Columns("T:T").Select
Selection.Delete Shift:=xlToLeft
Range("R1").Select

L'exécution de cette macro prend environ 2 secondes dans le format .xls. Cette même macro prend environ 8 secondes dans le format .xlsm.

Pourquoi? S'il y a une explication, svp, dite-le moi....

Et est-ce qu'il y a un moyen de récupérer de la vitesse d'exécution dans mon fichier extension .xlsm.

Peut-être le nombre de ligne dans une feuille .....???

Merci de m'aider.

Cydor007
 

JCGL

XLDnaute Barbatruc
Re : Macro plus lente avec un format de fichier xlsm

Bonjour à tous,

Avec un fichier c'est mieux....

Peux-tu essayer ceci :

VB:
Option Explicit

Sub Test()
    Dim DerL&
    With Sheets("Registre")
        DerL = .Range("M" & Rows.Count).End(xlUp).Row
        Range("M1:M" & DerL).Copy Range("T1")
        Columns("T:T").Sort Key1:=Range("T1"), Order1:=xlDescending
        Range("T2").Copy
        Range("R1").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        Range("S4").Formula = "=LARGE(C[1],1)"
        Range("S4").Copy
        Range("S1").PasteSpecial Paste:=xlPasteValues
        Range("S4").ClearContents
        Columns("T:T").Delete Shift:=xlToLeft
        Range("R1").Select
    End With
End Sub

A+ à tous
 

Cydor007

XLDnaute Occasionnel
Re : Macro plus lente avec un format de fichier xlsm

Bonjour à tous,

Avec un fichier c'est mieux....

Peux-tu essayer ceci :

VB:
Option Explicit

Sub Test()
    Dim DerL&
    With Sheets("Registre")
        DerL = .Range("M" & Rows.Count).End(xlUp).Row
        Range("M1:M" & DerL).Copy Range("T1")
        Columns("T:T").Sort Key1:=Range("T1"), Order1:=xlDescending
        Range("T2").Copy
        Range("R1").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        Range("S4").Formula = "=LARGE(C[1],1)"
        Range("S4").Copy
        Range("S1").PasteSpecial Paste:=xlPasteValues
        Range("S4").ClearContents
        Columns("T:T").Delete Shift:=xlToLeft
        Range("R1").Select
    End With
End Sub

A+ à tous

Bonjour JCGL

Effectivement c'est plus rapide, j'ai gagné 3 secondes environ.

Mais je n'explique pas pourquoi c'est plus long

As-tu une explication logique à me fournir?:)

Merci de ta collaboration.

Cydor007
 

Discussions similaires

Réponses
5
Affichages
136
Réponses
3
Affichages
591

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p