Plus je fais fonctionner la macro et plus je m'aperçois d'un ralentissement sur
Bapsie
Messages postés3Date d'inscriptionvendredi 19 septembre 2008StatutMembreDernière intervention 1 février 2013
-
28 janv. 2013 à 14:52
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
1 févr. 2013 à 10:20
bonjour,
je n'arrive pas à m'en sortir, la macro est très lente et au fur et à mesure que je la lance, excel se ralenti
Il s'agit simplement à l'aide du bouton IMPRIMER PRODUCTION de faire une mise en page sur la vue numéro 1
de la feuille 4
Cette macro met plus de 2 minutes à s'effectuer puis lorsque je la lance plusieurs fois, toutes les fonctionnalités d'excel se retrouve ralenties
je vous remercie par avance sur d'eventuels suggestions de correction
Bapsie
Messages postés3Date d'inscriptionvendredi 19 septembre 2008StatutMembreDernière intervention 1 février 2013 31 janv. 2013 à 08:25
Merci pour votre réponse, j'ai déjà essayé le pas à pas f8 mais la macro ralentie sur chaque commande, je ne trouve pas de solutions
En tout les cas merci d'avoir pris du temps pour mon pb
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 31 janv. 2013 à 08:42
Bonjour,
Ta macro modifie énormément de mises en forme. Ces modifications restent en mémoire de Excel en vue de l'utilisation éventuelle de Undo. Ce qui fait que, dès le deuxième "coup", Excel garde en mémoire deux fois toutes ces mises en forme (déjà fastidieuses pour lui, chacune d'entre elles).
Tu gagnerais probablement en ré-enregistrant ton classeur juste après chaque modification de l'espèce (Excel "oublierait" ainsi la mise en forme précédente).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 31 janv. 2013 à 08:48
Et pourquoi inhiber Application.DisplayAlerts ?
Parce que Excel t'a probablement fait savoir que tu lançais une opération fastidieuse ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 31 janv. 2013 à 09:03
Lorsque tu m'auras répondu, je te ferai probablement une suggestion salutaire (qui devrait non seulement éviter le ralentissement croissant, mais en plus t'éviter les deux premières minutes de travail)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Bapsie
Messages postés3Date d'inscriptionvendredi 19 septembre 2008StatutMembreDernière intervention 1 février 2013 1 févr. 2013 à 09:54
Bonjour
j'ai une petite amélioration effectivement en suivant ta suggestion de pré enregistrement, c'est à dire que lorsque je lance la macro j'ai un temps d'exécution d'une minute au lieu de deux.
Mais le ralentissement continue au fur et à mesure que je lance la macro et là je ne comprends toujours pas pourquoi ?
Si tu as une autre solution, c'est avec grand plaisir que je la suivrai, car je ne m'en sors pas
un grand merci par avance
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 févr. 2013 à 10:20
Il doit y avoir une autre raison encore quelque part dans ton code, qui provoque un tel ralentissement de plus en plus important. Les hypothèses sont alors nombreuses. Parmi les plus plausibles : la création d'objets ou d'instances sans libérer la mémoire une fois utilisés.
Quoi qu'il en soit et indépendamment de cette seconde raison (à traiter en plus de la première) :
tu éreintes Excel à le charger ainsi de lourdes mises en forme, surtout ainsi répétées sans cesse.
Tu gagnerais probablement à procéder avec deux classeurs :
classeur 1 : tes données et leur mise en forme figée (sans donc jamais modifier autre chose que tes données)
classeur 2 (espèce de miroir) : tes mises en formes telles que souhaitées pour l'impression, sans aucune donnée au départ. Ces mises en forme ne devront jamais être modifiées
Méthode de travail : après n'avoir modifié que tes données dans le classeur 1, tu les "projettes" sur la classeur 2, puis fais sur ce second classeur tes travaux d'impression. De cette manière : pas de travail de mise:remise en forme nécessaire entre chaque impression.
Pour passer uniquement tes données dune feuille d'un classeur à une feuille d'un autre classeur, le mieux (plus rapide) est de passer par le truchement d'un tableau dynamique (toto, dans l'exemple ci-après) :
Exemple :
Dim toto
toto = ThisWorkbook.Worksheets("Feuil1").Range("A1:F10").Value
With Workbooks("....") ' ici le nom de l'autre classeur
.Worksheets("Feuil1").Cells.ClearContents
.Worksheets("Feuil1").Range("A1:F10") = toto
End With
A faire pour chaque feuille à traiter.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.