Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro plus lente avec un format de fichier xlsm

  • Initiateur de la discussion Initiateur de la discussion Cydor007
  • 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 !

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
 
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
 
Re : Macro plus lente avec un format de fichier xlsm


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
 
- 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
10
Affichages
455
Réponses
18
Affichages
134
Réponses
17
Affichages
877
Réponses
2
Affichages
214
  • Question Question
Microsoft 365 Erreur de format
Réponses
5
Affichages
436
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…