Réduire le temps d'exécution d'une macro
Résolu/Fermé
siamens_duj
Messages postés
191
Date d'inscription
vendredi 20 juin 2014
Statut
Membre
Dernière intervention
14 février 2019
-
Modifié par siamens_duj le 16/02/2016 à 12:49
siamens_duj - 16 févr. 2016 à 14:07
siamens_duj - 16 févr. 2016 à 14:07
A voir également:
- Réduire le temps d'exécution d'une macro
- Comment réduire la taille d'un fichier - Guide
- Comment reduire la taille d'une photo - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Blocage agriculteur carte en temps réel - Guide
1 réponse
jordane45
Messages postés
38137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
16 févr. 2016 à 13:29
16 févr. 2016 à 13:29
Bonjour,
Signifie que tant que la cellule A1 de ta Feuille "confirm" est différente de 0 ... alors tu boucle....
Ce qui veut dire que si c'est le cas... tu entres dans une boucle infinie ... à moins qu'à un moment ton code change la valeur de cette cellule... chose que je ne voie pas dans ton code actuel.
Ensuite... plutôt que de faire une boucle de z = 1 à 40000 ..... pour vérifier ceci :
Tu ferais mieux d'utiliser la méthode FIND ( et plus exactement la FIND ALL ) afin de trouver rapidement toutes les lignes correspondant à ce critère.
Regardes ici :
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#findall
Il suffit ensuite de boucler sur l'array retourné par cette fonction pour effectuer le traitement désiré.
Do While Workbooks("CAP").Sheets ("confirm").Range("A1").Value <> "0"
Signifie que tant que la cellule A1 de ta Feuille "confirm" est différente de 0 ... alors tu boucle....
Ce qui veut dire que si c'est le cas... tu entres dans une boucle infinie ... à moins qu'à un moment ton code change la valeur de cette cellule... chose que je ne voie pas dans ton code actuel.
Ensuite... plutôt que de faire une boucle de z = 1 à 40000 ..... pour vérifier ceci :
If Workbooks("CAP").Sheets("confirm").Range ("H1").Value = Workbooks("txt").Sheets("bdd").cells (Z, 3).Value Then
Tu ferais mieux d'utiliser la méthode FIND ( et plus exactement la FIND ALL ) afin de trouver rapidement toutes les lignes correspondant à ce critère.
Regardes ici :
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#findall
Il suffit ensuite de boucler sur l'array retourné par cette fonction pour effectuer le traitement désiré.
16 févr. 2016 à 14:07
J'ai utilisé la méthode Find mais ça n'a pas fonctionné car je veux renvoyer la valeur de la cellule G lorsque je trouve la valeur de H1 dans mon second classeur et j'ai été vite bloqué.
Quant à la fonction Find ALL j'avoue n'avoir rien compris donc je suis resté sur la méthode simple mais bancale que je vous ai montré.
J'ai essayé d'appliquer vos conseils, j'ai changé la valeur de H1 quand il trouve la valeur en i1 et j'ai aussi mis un Exit Do et ça fonctionne.
Merci beaucoup pour vos conseils.