IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

même macro dans 2 fichiers différents => 2 temps d'exécution différents (x10)


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Avril 2025
    Messages : 4
    Par défaut même macro dans 2 fichiers différents => 2 temps d'exécution différents (x10)
    Bonjour,

    je me forme et j'explore l'usage des tableaux structurés en VBA.

    Cette exploration m'amène à faire une observation étonnante :
    - j'ai la même macro dans 2 fichiers différents (A et B)
    - elle s'exécute en ~1s dans le fichier A
    - et en ~10s dans le fichier B

    Quelqu'un parmi vous aurait-il une explication ?

    Merci d'avance aux contributeurs.


    Les 2 fichiers sont en PJ, et voici le code de la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    Sub creer_ts_v1()
     
        ' Fonction ADD dans boucle FOR pour ajouter 579 lignes
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
        ' désactiver les MAJ cf affichage & recalcul pour gagner du temps à l'exécution
        Application.ScreenUpdating = False
        Application.DisplayStatusBar = False
        Application.EnableEvents = False
        ActiveSheet.DisplayPageBreaks = False
        Application.Calculation = xlCalculationManual
     
        ' récupérer l'heure courante au début (pour messure du temps d'exécution)
        tempsDebut = Timer
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
        ' nom du ts à manipuler
        LDD = "ts_v1"
     
        ' RAZ TS
        If Not Range(LDD).ListObject.DataBodyRange Is Nothing Then
            Range(LDD).ListObject.DataBodyRange.Delete
        End If
     
    'Debug.Print "Range(LDD).ListObject.ListRows.Count = " & Range(LDD).ListObject.ListRows.Count
     
        ' boucle FOR
        For cpt = 1 To 579
     
            ' ajouter 1 ligne dans le TS
            Range(LDD).ListObject.ListRows.Add
     
    'Debug.Print "Range(LDD).ListObject.ListRows.Count = " & Range(LDD).ListObject.ListRows.Count
     
            Ligne = Range(LDD).ListObject.ListRows.Count
     
            ' compléter la ligne 1 avec le n° du cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 1) = cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 2) = cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 3) = cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 4) = cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 5) = cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 6) = cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 7) = cpt
            Range(LDD).ListObject.DataBodyRange(Ligne, 8) = cpt
     
        Next
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
        ' récupérer l'heure courante à la fin (pour messure du temps d'exécution)
        tempsFin = Timer
     
        ' réactiver les MAJ cf affichage & recalcul à la fin
        Application.ScreenUpdating = True
        Application.DisplayStatusBar = True
        Application.EnableEvents = True
        ActiveSheet.DisplayPageBreaks = True
        Application.Calculation = xlCalculationAutomatic
     
        ' affichage de fin pour prévenir l'utilisateur (avec ou sans mesure du temps d'exécution)
        MsgBox "FIN - " & tempsFin - tempsDebut & "s"
        'MsgBox "FIN"
     
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2007] lancer macro dans le fichier de son choix sans ouvrir excel
    Par karlakir dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/05/2009, 20h46
  2. Excécuter Macro dans plusieurs fichiers Excel
    Par mattwarend dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 24/10/2008, 12h06
  3. Réponses: 1
    Dernier message: 08/10/2008, 15h30
  4. Réponses: 9
    Dernier message: 10/05/2007, 10h56
  5. [VBA-E] Copier une macro dans un fichier à l'aide d'une macro
    Par Capsule dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/01/2007, 20h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo