PB de Performance Macro

F

FDinguirard

Guest
Bonjour,

le document ci-joint contient du code qui permet de :

a) à chaque ligne vide suivie d'une ligne non vide : imprimer la plage de valeurs précédente avec titres

b) si deux lignes vides consécutives, arrêt du programme.


PROBLEME :

sur mon poste, cela prend 30 secondes.
sur le poste de eric qui a posté la question d'origine sur ce forum, cela prend 10 minutes.

Quelles sont les pistes d'optimisations possibles ?
 

Pièces jointes

  • gestimpresslignevide.zip
    27.3 KB · Affichages: 42
  • gestimpresslignevide.zip
    27.3 KB · Affichages: 45
  • gestimpresslignevide.zip
    27.3 KB · Affichages: 44
S

STéphane

Guest
bonjour

pour voir si la ligne est vide, faites un test sur :

msgbox application.counta(activesheet.rows(i))

je ne pense pas qu'il soit nécessaire de redéfinir toute la mise en page à chaque fois, à moins que le changement de la zone réinitialise tous les paramètres de la mise en page.


bye
Stéphane
 
F

FDinguirard

Guest
Merci STéphane : la macro est 5 fois plus rapide sur mon poste !

Ci joint le code.

Peux tu me faire un petit cours sur la fonction CountA () car elle ne figure pas dans l'aide en ligne.

FD
 

Pièces jointes

  • gestimpresslignevide.zip
    26.2 KB · Affichages: 45
  • gestimpresslignevide.zip
    26.2 KB · Affichages: 44
  • gestimpresslignevide.zip
    26.2 KB · Affichages: 40
S

STéphane

Guest
bonjour

counta est l'équivalent de la fonction de feuille de calcul vba.
on doit lui passer en une expression qui retourne une plage

msgbox application.counta(range("A1:A5"))


count est l'équivalent de la fonction nb

bye
stephane
 

Discussions similaires

Statistiques des forums

Discussions
312 080
Messages
2 085 150
Membres
102 794
dernier inscrit
espinata