MODIFIER une macro pour la rendre plus rapide

Bonjour, j'ai un fichier excel avec un tableau comportant une colonne avec des dates, j'ai nommé deux periodes et je souhaiterai supprimer toutes les lignes en dehors de ces deux periodes, j'ai un code qui marche bien grâce à ce site mais le probleme c'est qu'il met enormement de temps (plus qu'une heure, mon fichier contient 200 colonnes et plus de 60000lignes). Vous trouverez ci-joint le fichier servant d'example, je ne sais pas comment effectuer cette opération de manière plus rapide.

31filtrer-2date.xlsm (26.39 Ko)

Salut,

la colonne B de la feuille 1 contient des formules qui dépendent de la feuille 2; or celle ci est vide.

De plus, la formule de la cellule B2 fait référence à la cellule A2 de la feuille 2 alors que la cellule B3 fait référence à la cellule A5 et B3 correspond à A6; je n'arrive pas à voir le "pattern" et sans ça, impossible de reproduire les formules de la colonne B après traitement.

Une proposition en pièce jointe, sans avoir l'assurance que la formule de la colonne B soit correcte.

Normalement, le code devrait être un peu plus rapide que la solution avec la suppression des lignes.

Le fait que la macro ait à traiter des formules ralentit considérablement le code.

24filtrer-2date.xlsm (32.13 Ko)

Bonjour kooka57,

Bonjour Game Over,

A mon avis, c’est ta formule avec SOMMEPROD qui est excessivement chronophage.

J’ai effacé la colonne code qui contient cette formule et j’ai effectué un test avec 10000 lignes pour voir la durée imputable à la suppression de 1/4 des lignes environ.

Le traitement a duré 3s.

Tu dois pouvoir gagner en temps :

1) en incluant l’instruction Application.Calculation = xlManual en début de code puis Application.Calculation = xlAutomatic en fin de code

2) en modifiant ta formule pour ne prendre en compte que la plage utile

Exemple pour 60000 lignes :

=SOMMEPROD((Feuil1!$A$2:$A$60000=Feuil2!A2)*(Feuil1!$D$2:$D$60000=1))

A+

Salut frangy,

c'est effectivement la formule qui rallonge la durée d'exécution du script.

Si tu lances la macro en mettant un point d'arrêt au niveau de la formule, le code est exécuté en une fraction de seconde.

la commande Application.Calculation = xlManual existe dans le code, ça ne donne rien.

dernière chose, il y aurait 200 colonnes dans le fichier original; si elles contiennent quasiment toutes des formules, ça risque d'être compliqué.

Bonjour, et merci pour vos réponses. Je vais essayer de remplacer les formules par leur valeur (supprimer les sommeprod) et ajouter Application.Calculation = xlCalculationManual et Application.Calculation = xlCalculationAutomatic, en esperant que ça accelere le calcul. je vous tiendrez au courant. Merci

si les formules ne te sont pas utiles, il te suffit de les changer en valeurs; il s'agira juste de modifier la macro et le tour sera joué

Rechercher des sujets similaires à "modifier macro rendre rapide"