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 :

Macro devient lente si plusieurs fichiers ouverts


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    chargé d'affaires
    Inscrit en
    Novembre 2017
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargé d'affaires
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 51
    Par défaut Macro devient lente si plusieurs fichiers ouverts
    Bonjour,

    Je n'arrive pas à trouver de cas similaires... disons simples reprenant mon problème.
    Je viens donc faire appel aux sages !

    J'ai un fichier avec des macros plutôt simples qui se contentent de faire des filtres auto pour trier ce que je veux en fonctions de plusieurs critères (ordre alpha, case non vide, contient "x", par date...).
    Mon fichier (hors tableau visé), via d'autre feuilles fait appel à des références externes pointant d'autres vers fichiers.
    Dans la mesure du possible toutes mes références externes sont de la forme : si case x ou y est vide ne rien faire, sinon recherchev dans les fichiers externes.
    Mon tableau a ce genre de formule uniquement lorsque la cellule xx est vide, une fois qu'elle est renseignée je fais un copier coller les valeurs, donc plus de liens externes.
    La dessus, quelques formatages conditionnels.

    Tout fonctionne à la perfection lorsqu'il est seul.
    Sauf que dans le cadre du travail, j'ai d'autres fichiers que j'ouvre ponctuellement, fichiers avec bcp d'informations, et dès lors mon fichier de base devient lent, rien d'insurmontable mais c'est agaçant d'attendre et surtout de ne pas comprendre d'où ça vient.

    Je me demandais donc s'il n'y avait pas un truc que je loupais du style thisworkbook à toutes les sauces, histoire qu'aucune macro n'aille s'égarer à aller inspecter les autres fichiers.
    D'ailleurs, aucune de mes macros n'a d'impact sur les autres fichiers ouverts, on dirait juste qu'ils sont là et que mes macros vont les parcourir en mode lecture seule...

    Donc si quelqu'un a une idée miracle ! ou une piste à suivre...
    Un grand merci d'avance.

    Pierre

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur calcul aéronautique
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur calcul aéronautique

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Par défaut
    Essaye de mettre au début de ta maccro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    et à la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True

  3. #3
    Membre averti
    Homme Profil pro
    chargé d'affaires
    Inscrit en
    Novembre 2017
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargé d'affaires
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 51
    Par défaut
    Merci pour ce premier retour.

    J'ai déjà le premier code en tête d'à peu prêt toutes mes macros.
    Par contre, je ne réactive pas en fin de macro ... est-ce grave ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Normalement, ce n'est pas nécessaire de repasser ScreenUpdating à True en fin de macro, c'est automatique. J'ai eu une fois sur une vieille version un problème suite à une prévisualisation avant impression. Donc, pas de problèmes de ce côté.

    Je suis contre l'utilisation de RECHERCHEV en interclasseurs et je pense que tu vas droit au casse-pipe avec ce truc. C'est d'ailleurs l'utilisation de RECHERCHEV en externe qui pourrait ralentir ton système. Perso, je rapatrie les données du classeur vers lequel pointe RECHERCHEV et je travaille en local. XL2016, donc de multiples façons de rapatrier les données (PowerQuery, liaison des données, MSQuery), avec une actualisation à l'ouverture et éventuellement à la demande via un simple clic droit dans la table liée.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Homme Profil pro
    chargé d'affaires
    Inscrit en
    Novembre 2017
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargé d'affaires
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 51
    Par défaut
    Salut,

    Ok pour le premier point, ça me va bien.

    Pour le deuxième, je n'ai encore jamais mis les doigts dans ces "Querry", va falloir que je jette un œil... un conseil avant que je regarde ? ou un lien où il y a une bonne leçon ?

    En fait recherchev est effectivement bien en interne mais mouline vite. Depuis peu j'utilise plutôt systématiquement EQUIV et INDEX... Je ne suis malgré tout pas certain que le temps soit vraiment optimisé !

    Cependant, et ce qui me choque dans ce qui se passe dans mon problème, c'est que tout ça fonctionne plutôt bien, voir très bien, lorsque le fichier est seul, et dès que j'en ouvre un un peu volumineux, c'est la panade !
    En fait je me demande s'il existe un moyen de faire en sorte que mes macros travaillent "avec des œillères" ... qu'elles ignorent le fait qu'il y a d'autres fichiers autour !

    Pierre

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si tes macros ne modifient pas des formules dans tes feuilles, et en réfléchissant bien aux impacts éventuels de cette solution, tu pourrais désactiver le calcul automatique en début de macro et le remettre en fin de macro.

    Pour ce qui est des liaisons entre classeurs, va déjà voir l'onglet Données, les outils d'import peuvent se manipuler assez facilement lorsqu'il s'agit d'importer de l'Excel dans de l'Excel...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par bienfp Voir le message
    Cependant, et ce qui me choque dans ce qui se passe dans mon problème, c'est que tout ça fonctionne plutôt bien, voir très bien, lorsque le fichier est seul, et dès que j'en ouvre un un peu volumineux, c'est la panade !
    Sache que tout classeur Excel ouvert prend de la place dans la mémoire vive, place qui n'est plus disponible pour faire des calculs, et si Excel n'a plus de place pour faire ses calculs dans la mémoire vive il est obligé de les faire dans le disque dur ce qui prend beaucoup plus de temps

    En fait je me demande s'il existe un moyen de faire en sorte que mes macros travaillent "avec des œillères" ... qu'elles ignorent le fait qu'il y a d'autres fichiers autour !
    Ce n'est pas possible, par contre tu pourrais éventuellement fermer les classeurs inutile puis les rouvrir à la fin de ta macro

  8. #8
    Membre averti
    Homme Profil pro
    chargé d'affaires
    Inscrit en
    Novembre 2017
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargé d'affaires
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 51
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Sache que tout classeur Excel ouvert prend de la place dans la mémoire vive, place qui n'est plus disponible pour faire des calculs, et si Excel n'a plus de place pour faire ses calculs dans la mémoire vive il est obligé de les faire dans le disque dur ce qui prend beaucoup plus de temps
    Ce n'est pas possible, par contre tu pourrais éventuellement fermer les classeurs inutile puis les rouvrir à la fin de ta macro
    Ah ! Merci pour l'intervention.

    Je ne peux malheureusement pas jongler avec ces fichiers, plutôt lourds, car c'est pour les remplir eux que je navigue sur mon fichier de base... et vu leur temps de réaction, je ne peux pas les fermer à chaque besoin...
    En gros mon fichier de base est toujours ouvert et ponctuellement j'ai mon suivi des offres ou des commandes que je dois compléter... ce sont eux qui plombent le fichier de base... mais ça reste ponctuel !

    Pour ce qui est de la mémoire vive, j'ai une station de travail pour Solidworks assez récente avec 16Go de ram, tout ouvert (sans soldiworks) je tourne à 6Go utilisés.

  9. #9
    Membre averti
    Homme Profil pro
    chargé d'affaires
    Inscrit en
    Novembre 2017
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargé d'affaires
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 51
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Si tes macros ne modifient pas des formules dans tes feuilles, et en réfléchissant bien aux impacts éventuels de cette solution, tu pourrais désactiver le calcul automatique en début de macro et le remettre en fin de macro.

    Pour ce qui est des liaisons entre classeurs, va déjà voir l'onglet Données, les outils d'import peuvent se manipuler assez facilement lorsqu'il s'agit d'importer de l'Excel dans de l'Excel...
    Mes macros classiques ne modifient pas de formules, mais par contre j'ai dans ma feuille principale : Private Sub Worksheet_Change(ByVal Target As Range)... et ça c'est exactement ce dont tu parles si je ne me trompe pas...

    Je prendrai effectivement 5 min pour aller voir les requêtes et liaisons dans "données".

  10. #10
    Membre averti
    Homme Profil pro
    chargé d'affaires
    Inscrit en
    Novembre 2017
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargé d'affaires
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 51
    Par défaut
    Donc si je comprends bien vos messages, mes macros ne sont pas sensées aller voir dans les autres fichiers à moins que je le leur demande, par contre, excel s'alourdi, et je n'ai pas vraiment de moyen d'isoler les macros pour qu'elles ne soient pas impactées par le poids général infligé par les autres fichiers, c'est ça ?

    Je pense que je vais tenter une version de mon fichier sans aucune formule pour voir. Puis les remettre petit à petit, pour voir où ça cloche.... j'ai juste peur de perdre plus de temps que ce que ça pourrait m'en rapporter !

Discussions similaires

  1. [Toutes versions] Macro VBA pour joindre plusieurs fichiers dans email
    Par ingenieurdu94 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/11/2016, 09h07
  2. Macro pour écrire sur plusieurs fichiers
    Par ExcelLiod dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/03/2016, 16h07
  3. [XL-2010] Macro Modification multiple sur plusieurs fichiers
    Par tbuhagiar dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/10/2013, 12h58
  4. [fopen] Plusieurs fichiers ouverts en même temps
    Par Newenda dans le forum MATLAB
    Réponses: 6
    Dernier message: 09/04/2009, 13h38
  5. Macro VBA - Manipulation de plusieurs fichiers
    Par Shaia79 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 27/02/2008, 21h06

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