Lenteur macro avec 2 boucles for
moseca
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour chers Experts
Problème principal: l'exécution de ma macro est trop lente, alors que j'ai 2 boucles for imbriquées qui peuvent parcourir près de 100 000 lignes chacune, et je crois donc au total 100 millions de cellules à tester. Je pense qu'on pourrait écrire le code autrement
Ci-dessous, une brève explication de ce que fait la macro (son objectif):
La macro calcule l'accumulation de véhicule dans un stationnement pour une période données et le mettre dans la colonne O, 15e colonnes du fichier ci-joint.
Pour cela, je compare la date d'entrée (colonne I) et la date de sortie (colonne J) d'un véhicule par rapport à la date de la période de calcul (colonne H): si la date de la période est supérieure à la date d'entrée (colonne I) et inférieure à la date de sortie (colonne J), alors le véhicule est dans le stationnement. Alors, pour chaque enregistrement (chaque ligne de la base de données représente un véhicule), la macro compare toutes les dates de la colonne H à la date d'entrée et de sortie du véhicule pour vérifier si ce véhicule est toujours dans le stationnement et elle fait de même pour le second véhicule et ainsi de suite jusqu'au dernier véhicule. NB: j'ai converti les dates en nombre pour faciliter l'exercice de comparaison. l'accumulation signifie en quelque sorte que plusieurs véhicules sont dans le stationnement pour une date donnée.
Si vous n'avez pas trop compris ce que je veux faire avec la macro, vous pouvez tout de même m'aider à reprogrammer la macro pour diminuer considérablement sa durée d'exécution.
J'ai joint le fichier pour que vous puissiez bien comprendre mon problème. Pour simplifier et pouvoir vous envoyer le fichier, je n'ai gardé que 500 lignes au lieu d'environ 100 milles.
https://www.cjoint.com/c/IIujUYgj8dc
Je vous remercie de votre aide!
Problème principal: l'exécution de ma macro est trop lente, alors que j'ai 2 boucles for imbriquées qui peuvent parcourir près de 100 000 lignes chacune, et je crois donc au total 100 millions de cellules à tester. Je pense qu'on pourrait écrire le code autrement
Ci-dessous, une brève explication de ce que fait la macro (son objectif):
La macro calcule l'accumulation de véhicule dans un stationnement pour une période données et le mettre dans la colonne O, 15e colonnes du fichier ci-joint.
Pour cela, je compare la date d'entrée (colonne I) et la date de sortie (colonne J) d'un véhicule par rapport à la date de la période de calcul (colonne H): si la date de la période est supérieure à la date d'entrée (colonne I) et inférieure à la date de sortie (colonne J), alors le véhicule est dans le stationnement. Alors, pour chaque enregistrement (chaque ligne de la base de données représente un véhicule), la macro compare toutes les dates de la colonne H à la date d'entrée et de sortie du véhicule pour vérifier si ce véhicule est toujours dans le stationnement et elle fait de même pour le second véhicule et ainsi de suite jusqu'au dernier véhicule. NB: j'ai converti les dates en nombre pour faciliter l'exercice de comparaison. l'accumulation signifie en quelque sorte que plusieurs véhicules sont dans le stationnement pour une date donnée.
Si vous n'avez pas trop compris ce que je veux faire avec la macro, vous pouvez tout de même m'aider à reprogrammer la macro pour diminuer considérablement sa durée d'exécution.
J'ai joint le fichier pour que vous puissiez bien comprendre mon problème. Pour simplifier et pouvoir vous envoyer le fichier, je n'ai gardé que 500 lignes au lieu d'environ 100 milles.
https://www.cjoint.com/c/IIujUYgj8dc
Je vous remercie de votre aide!
A voir également:
- Lenteur macro avec 2 boucles for
- Lenteur pc - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Supercopier 2 - Télécharger - Gestion de fichiers
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peux-tu nous en dire plus à propos de la colonne H? contient-elle 100000 valeurs différentes?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Je me demande si tu as réellement besoin de 100000 dates de référence différentes.
Dans le fichier que tu as envoyé pour que nous puissions bien comprendre, toutes les valeurs sont identiques dans le colonne H: penses-tu que cela nous aide à comprendre?
Quel est le vrai résultat que tu as besoin d'obtenir pour réussir l'exercice?
Dans le fichier que tu as envoyé pour que nous puissions bien comprendre, toutes les valeurs sont identiques dans le colonne H: penses-tu que cela nous aide à comprendre?
Quel est le vrai résultat que tu as besoin d'obtenir pour réussir l'exercice?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
en réalité, tu n'expliques pas l'énoncé de ton exercice, ce que tu veux obtenir. tu expliques quelle technique tu as choisi d'utiliser, sans nous dire quel est ton but.
si ton but est de déterminer l’évolution du nombre de voitures dans le parking, ta technique est mal choisie. tu n'as même pas besoin de programme pour faire cela, tu peux facilement le faire à la main avec Excel.
avant de programmer, réfléchi bien à ton problème, et aux solutions possibles. commence avec des exemples simples, par exemple 5 voitures.
si ton but est de déterminer l’évolution du nombre de voitures dans le parking, ta technique est mal choisie. tu n'as même pas besoin de programme pour faire cela, tu peux facilement le faire à la main avec Excel.
avant de programmer, réfléchi bien à ton problème, et aux solutions possibles. commence avec des exemples simples, par exemple 5 voitures.
Bonjour,
Les valeurs de la colonne H sont différentes, c'est des dates, j'ai juste pris leur CNUM() pour que la comparaison soit simple. Mais, voici un fichier plus simple avec 10 voitures, j'y ai ajouté des explications qui devaient certainement t'aider.
Merci encore!
https://www.cjoint.com/c/IIupAXLG0Pc
Les valeurs de la colonne H sont différentes, c'est des dates, j'ai juste pris leur CNUM() pour que la comparaison soit simple. Mais, voici un fichier plus simple avec 10 voitures, j'y ai ajouté des explications qui devaient certainement t'aider.
Merci encore!
https://www.cjoint.com/c/IIupAXLG0Pc
imagine que tu es le gardien d'un parking et que tu veux prendre note, toutes les 5 minutes, du nombre de voitures dans le parking. comment vas-tu faire? vas-tu faire le tour du parking toutes les 5 minutes et compter le nombre de voitures?
ensuite, imagine que tu as, en main, 10 tickets de parking, avec les moments d'entrée et les moments de sortie. tu as une feuille de papier et un crayon. comment vas tu faire pour déterminer combien il y avait de voitures dans le parking à tout moment? que vas-tu écrire sur ta feuille?
ensuite, imagine que tu as, en main, 10 tickets de parking, avec les moments d'entrée et les moments de sortie. tu as une feuille de papier et un crayon. comment vas tu faire pour déterminer combien il y avait de voitures dans le parking à tout moment? que vas-tu écrire sur ta feuille?
MERCI!!