Excel 2007 et 2010 Lenteur dans l'exécution du code
Formabox
-
25 oct. 2012 à 15:34
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
26 oct. 2012 à 15:46
Hello,
J'ai toute une série de macros que j'ai développé dans Excel 2007 qui lorsque je les exécute depuis Excel 2010, font planter mon système telle qu'elles prennent du temps à s'exécuter...
Quelqu'un a déjà eu ce problème en passant de 2007 à 2010 ?
J'ai l'impression que mon code ralentit chaqe fois qu'il arrive sur une ligne de code où il doit insérer des lignes...
J'utilise le code suivant :
Selection.EntireRow.Insert
A voir également:
Excel 2007 et 2010 Lenteur dans l'exécution du code
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 oct. 2012 à 16:40
Bonjour,
1) VB/Excel n'est pas du VB6.
Tu es ici dans la section :
Forum > Visual Basic 6 > Système
Veille s'il te plait dorénavant à ouvrir tes discullions VBA dans la section appropriée : Langages dérivés > VBA (c'est important).
Un administrateur bienveillant voudra bien déplacer la présente discussion.
2) ce ne sera certes pas à l'aide de cette seule ligne de code que nous pourrons voir où et pourquoi tu as ces lenteurs.
Tout ce qu'elle nous permet jusqu'à présent de constater est que tu travailles maladroitement à coups de select et de selection (-à éviter) au lieu de travailler directement sur les objets Excel.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Désolée mais je ne suis de loin pas une experte en programmation et je n'avais pas vu la section VBA sinon j'y serai allée...
Je sais aussi que je travaille pas forcément juste mais je me débrouille comme je peux et merci de me donner une piste pour savoir comment travailler avec les objets Excel afin que je puisse apprendre quelque chose ;-)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 oct. 2012 à 19:15
Les objets Excels ?
Ce sont les classeurs, les feuille, les plages, etc ...
On agit par exemple sur la plage A1:B3 de la feuille Feuil1 du classeur toto, non en sélectionnant cette plage pour agir ensuite sur la sélection, mais en agissant directement sur l'objet :
WorkBooks("toto").WorkSheets("Feuil1").Range("A1:B3")
C'est là un premier pas à faire et il est important, ce pas là.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 26 oct. 2012 à 15:46
Et après avoir mis en pratique ce que te dis ucfoutu, tu pourras utiliser 2 commandes qui accélèrent un peu, voire beaucoup, la vitesse d'exécution.
En début de procédure, tu peux mettre
Application.ScreenUpdating = False 'désactive le raffraichissement d'écran
Application.Calculation = xlCalculationManual 'active le mode de calcul manuel
et à la fin
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Calculation est surtout important si tu as des formules. Le fait d'insérer ou supprimer des lignes pousse Excel à recalculer à chaque fois... d'où lenteur...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI