Comparaison
Fermé
ruthabella
Messages postés
5
Date d'inscription
lundi 24 avril 2017
Statut
Membre
Dernière intervention
27 avril 2017
-
Modifié le 24 avril 2017 à 18:38
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 25 avril 2017 à 12:03
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 25 avril 2017 à 12:03
A voir également:
- Comparaison
- Comparaison million milliard - Accueil - Technologies
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
- Comparaison prix amazon - Accueil - Commerce
- Logiciel de comparaison facial gratuit - Télécharger - Photo & Graphisme
- Les outils de comparaison pdf - Télécharger - PDF
3 réponses
jordane45
Messages postés
38321
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 décembre 2024
4 707
24 avril 2017 à 18:38
24 avril 2017 à 18:38
Bonjour,
Au lieu de faire des boucles dans des boucles .... regarde donc la méthode FIND... et même plus précisément la fonction findall
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#findall
En gros .. tu boucles sur une seule colonne ....
Pour chaque cellule de cette colonne tu recherche les cellules correspondantes avec un findall
Au lieu de faire des boucles dans des boucles .... regarde donc la méthode FIND... et même plus précisément la fonction findall
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#findall
En gros .. tu boucles sur une seule colonne ....
Pour chaque cellule de cette colonne tu recherche les cellules correspondantes avec un findall
NHenry
Messages postés
15164
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 novembre 2024
345
24 avril 2017 à 18:42
24 avril 2017 à 18:42
Quelques pistes :
Utilise
Application.ScreenUpdating = False
en début et
Application.ScreenUpdating = True
en fin de ta fonction.
Actuellement tu compares toutes les cellules des 2 colonnes (donc les 65535 ou les 2 millions de lignes selon la version d'Excel) cela peut prendre beaucoup de temps
A la place de faire un Range("A:A") essaye plutôt de faire une boucle Do/Loop et d'utiliset la méthode ActiveSheet.Cells avec comme condition de fin, plus de données sur les 2 colonnes.
EVITES les GoTo, préfères "Exit For" à la place, c'est largement plus propre.
Utilise
Application.ScreenUpdating = False
en début et
Application.ScreenUpdating = True
en fin de ta fonction.
Actuellement tu compares toutes les cellules des 2 colonnes (donc les 65535 ou les 2 millions de lignes selon la version d'Excel) cela peut prendre beaucoup de temps
A la place de faire un Range("A:A") essaye plutôt de faire une boucle Do/Loop et d'utiliset la méthode ActiveSheet.Cells avec comme condition de fin, plus de données sur les 2 colonnes.
EVITES les GoTo, préfères "Exit For" à la place, c'est largement plus propre.
ruthabella
Messages postés
5
Date d'inscription
lundi 24 avril 2017
Statut
Membre
Dernière intervention
27 avril 2017
25 avril 2017 à 09:57
25 avril 2017 à 09:57
Merci NHenry,
mais je ne sait pas utiliser Do/Loop et activesheet, peut-tu mettre cette boucle et cette methode là dans le bout de code que j'ai envoyé???? s'il-te-plait !!!!!!!!
Merci
mais je ne sait pas utiliser Do/Loop et activesheet, peut-tu mettre cette boucle et cette methode là dans le bout de code que j'ai envoyé???? s'il-te-plait !!!!!!!!
Merci
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 25 avril 2017 à 11:37
Modifié le 25 avril 2017 à 11:37
Bonjour
ci joint test de rapidité
comparaison de plusieurs méthodes
https://mon-partage.fr/f/QBlA2fwV/
pour chercher une cellule dans une colonne, la méthode "Find", indiquée par Jordane, est la simple en égalité de temps une variable-tableau
mais si le travail est plus compliqué, la variable tableau est + rapide
j'ai fait un truc là-dessus mais je ne le retrouve pas dans mon B... :-/
si je retrouve...
Michel
ci joint test de rapidité
comparaison de plusieurs méthodes
https://mon-partage.fr/f/QBlA2fwV/
pour chercher une cellule dans une colonne, la méthode "Find", indiquée par Jordane, est la simple en égalité de temps une variable-tableau
mais si le travail est plus compliqué, la variable tableau est + rapide
j'ai fait un truc là-dessus mais je ne le retrouve pas dans mon B... :-/
si je retrouve...
Michel
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 25 avril 2017 à 12:06
Modifié le 25 avril 2017 à 12:06
J'ai retrouvé :-)
comparaison sur 20000 lignes: écran libre, figé, variable tableau
nota: quand la macro rend la main au système, il n'est pas nécessaire de faire un screenupdating=true. Source: Laurent Longre
https://mon-partage.fr/f/SO48HjNu/
comparaison sur 20000 lignes: écran libre, figé, variable tableau
nota: quand la macro rend la main au système, il n'est pas nécessaire de faire un screenupdating=true. Source: Laurent Longre
https://mon-partage.fr/f/SO48HjNu/
25 avril 2017 à 10:28
merci jordan, mais je ne sait pas utiliser FIND et findall, peut-tu mettre cette methode et cette fonction dans le bout de code que j'ai envoyé???? s'il-te-plait !!!!!!!!
Merci
25 avril 2017 à 10:32
Il y a des exemples dedans....
25 avril 2017 à 11:23