Réduire le temps d'exécution d'une macro
Résolu/Fermé
siamens_duj
Messages postés
192
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
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Blocage agriculteur carte en temps réel - Accueil - Transports & Cartes
- Comment reduire la taille d'une photo - Guide
- Macro word - Guide
1 réponse
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
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.