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 :

Code VBA dupliquer onglets - réduire les délais [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2018
    Messages : 7
    Par défaut Code VBA dupliquer onglets - réduire les délais
    Bonjour,
    A partir d'un fichier mère xlsm pas très lourd 150 Ko, je duplique au max 7 onglets pour créer un nouveau fichier et lorsque la macro exécute ce passage elle mouline pendant environ 15 secondes..

    Ci-dessous mon code, avez vous des suggestions qui pourrait réduire ce délai. (j'utilise déjà "Application.ScreenUpdating = False")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'Duplique les onglets pour créer le nouveau fichier
            Sheets(Array("Commands", "List", "Master Checklist", "Cash Mgmt", "Model Portfolio", _
            "Broker Commissions", "DTL - STAR", "PfC Targets")).Select
            Sheets(Array("Commands", "List", "Master Checklist", "Cash Mgmt", "Model Portfolio", _
            "Broker Commissions", "DTL - STAR", "PfC Targets")).Copy
     
    Chemin_Sauvegarde = "\\Blabla\Blabla2\blabla3\Fund\"
    ChDir Chemin_Sauvegarde
     
     
    ActiveWorkbook.SaveAs Filename:=Application.GetSaveAsFilename(Chemin_Sauvegarde & Nom_Sauvegarde, fileFilter:="Excel Files (*.xls), *.xls")
    Merci par avance pour votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas si cela peut aider mais déjà, vous pouvez supprimer la première ligne d'instruction avec la méthode Select qui ne sert strictement à rien si ce n'est de ralentir l'exécution de la procédure.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Peut-être en dupliquant le classeur puis supprimer les feuilles superflues.

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2018
    Messages : 7
    Par défaut
    Merci pour vos deux propositions, la suppression de la ligne select a en effet fait gagner quelques secondes (va savoir pourquoi..), la duplication du classeur devrait être encore plus rapide.

    Merci pour votre aide

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    va savoir pourquoi.
    Tout simplement parce-que l'action de sélectionner ou d'activer une ou plusieurs feuilles prend un certain temps.
    On le répète régulièrement dans nos réponses, sauf cas particuliers, la sélection d'objets tels que Workbook, Worksheet, Range, etc. est parfaitement inutile et ralentit la procédure.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Mes codes VBA vers VB6 pour les utilisés dans excel avec DLL
    Par camillenze dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/07/2017, 19h24
  2. [XL-2013] Fermet tous les onglets IE ouverts depuis mon code VBA
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/07/2015, 16h34
  3. Réponses: 13
    Dernier message: 25/04/2012, 15h27
  4. Réponses: 8
    Dernier message: 01/08/2008, 15h02
  5. [VBA Excel] supprimer tous les onglets sauf un
    Par drinkmilk dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/11/2005, 18h11

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