RECHERCHEV : Temps de traitement trop long...

bencourriel

XLDnaute Occasionnel
Bonjour à tous,

J'ai deux feuilles de données qui contiennent chacune environ 60 000 lignes de données. Dans une des colonnes, on retrouve un numéro (à environ 30 caractères). J'utilise la fonction de RECHERCHEV pour savoir si ce numéro de chaque ligne dans la feuille #1 se trouve dans la colonne de numéro de la feuille #2.

Tout fonctionne relativement bien mais le temps requis pour faire cette opération est drôlement long. Un bon 15 minutes à regarder mon ordinateur travailler avec le CPU dans le tapis sans pouvoir rien faire d'autres. J'ai quand même un processeur de 1.8 GHZ avec 512 Mo de RAM et je m'assure que rien d'autres fonctionne quand je dois faire ce travail.

Pouvez-vous me dire s'il existe un autre moyen d'arriver à mes fins? Il s'agit de deux listes de clients à deux périodes différentes et je veux déterminer quels sont les nouveaux clients. Le numéro à 30 caractères est le seul identifiant que j'ai. Merci à l'avance pour votre aide!

;)
 

pat1545.

XLDnaute Accro
Bonsoir ;

avec 2 listes de 32000 +/-, (403 valeurs uniques, les autres étant des doublons volontaires) mises dans une seule mais différenciées par couleur et extraction sans doublon juste à coté:

résultat immédiat ou presque

mais bien sur une seule colonne et 2 listes en une seule
 

Ti_

Nous a quitté
Repose en paix
Re à tous,

Ce que je suis bête parfois, mais ce que je suis bête !
Je me suis creusé tout l'après-midi pour adapter une routine compliquée alors que j'avais la solution miracle sous les yeux, que j'ai par ailleurs utilisée pour créer mes valeurs, et que j'utilise à toutes les sauces dans d'autres circonstances.
Grâce à cette méthode, le temps de travail de la routine passe de 5 min à 4 secondes sur 60000 lignes ! Vous n'avez pas encore deviné ? Mais oui, la collection bien sûr !

Bon, ben oublions le Soundex, merci quand même à tous pour vos tests. Quant à toi Thierry, je vois que tu as sorti l'artillerie lourde, tu me fais penser à Néo, Morphéus et leurs acolytes (que je me suis repassé un petit coup ce soir, histoire de voir les feux crépiter).

Ben, là je ne ferai pas mieux pour ce soir...

[file name=ChercheparCol.zip size=38001]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ChercheparCol.zip[/file]
 

Pièces jointes

  • ChercheparCol.zip
    37.1 KB · Affichages: 108

ChTi160

XLDnaute Barbatruc
bonjour le Fil
bonjour le Forum
re Mister

moi je suis tombé a 3 secondes C'est Oufff
ce qui est marrant c'est qu'hier soir j'ai passé mon temps à chercher des infos sur comment trier une collection et je me dit qu'Excel et VBA c'est aussi une affaire de bidouille de Challenge de d'état d'esprit un peu filou pour résoudre des problèmes qui ne sont pas toujour évident

une petite question y dans la procèdure un truc que je ne comprends pas, j'espère que tu pourras me l'expliquer
on a dans un premier temps

Set Plage2 = .Range('A2', .Range('A65536').End(xlUp))

et dans un deuxieme
Else
Err.Clear
Plage2(Bcle, 2) = 'Ancien'
End If
soit si je lis ligne boucle de la Colonne 2 d'une plage2 qui au départ n'en contient qu'une c'est surement évident mais moi pas Comprendre , je pense que cela ne va pas tarder je vais encore apprendre quelque Chose
Merci D'avance

Message édité par: Chti160, à: 21/08/2005 15:49
 

Ti_

Nous a quitté
Repose en paix
Salut Jean-Marie

Eh oui, ça fait partie de ces petits raccourcis qu'on peut se permettre avec VBA, même s'ils ne sont pas très académiques. Le fait est que ça passe et que ça donne le même résultat que
Plage2.Cells(Bcle).Offset(0, 1) = 'Ancien'
alors pourquoi s'en priver ?

;)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Magic Ti, Jean-Marie, Micahel, le Fil, Le Forum

Bravo !! mais là on ne peut plus voir de différence majeure entre les performance des Bécannes :eek:

00:39 mon vieuw coucou PIII 800

00:02 le PIV 3.4

00:02 le Centrino 1.7

00:02 l'Athlon 1.8

Mais sinon pour Michael, non se n'est pas la première fois qu'AMD avec les Athlons mouchent Intel niveau rapidité ce fusse même une Pub il y a un peu plus de deux ou trois ans au début des Pubs Comparatives...

Et tout spécialement pour notre Maître _Ti :








LOL ;)

Mais merci de la Comparaison sur Morphéus et Néo, j'ai bien rigolé en buvant mon café en te lisant !

Bon Dimanche à tous et toutes
[ol]@+Thierry[/ol]
 

ChTi160

XLDnaute Barbatruc
re bonjour le Fil

merci Mister de cette information toi tu en ai déjà a exploiter les travers du système merci de nous en faire profiter

je ne doute pas que c'est petits raccourcis(comme tu dis) sont le fruit de tas d'essais et de galères qui parfois amènent à des Découvertes

bonne fin de Journée
 

Ti_

Nous a quitté
Repose en paix
Ouarf, the Matrix, je suis sûr qu'on y mettrait Monique, elle vous la décoderait en moins de temps qu'il ne faut pour le dire.
Hein, Monique en Trinity... B)

Tiens, entre deux couches de peinture au plafond et pour faire passer cette après-midi pluvieuse, j'ai transformé ça en macro xla.
Une fois lancé, il y a un noveau bouton 'Doublon' qui s'affiche dans la barre d'outils 'Mes Macros' ou, si elle n'existe pas, dans l'onglet 'Outils' de la barre du haut.
Pour ne pas encombrer l'éditeur VBA, j'ai protégé le code VBA avec le mot de passe 'a' (comme ça même si vous l'oubliez, Acyd ne va pas trop chauffer).

Ca a été vite fait, alors dites-moi s'il y a des choses à arranger avant que le mette sur Vériti.

Et maintenant y'a plus qu'à attendre l'avis de bencourriel.

[file name=Doublons_20050821174359.zip size=18351]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Doublons_20050821174359.zip[/file]
 

Pièces jointes

  • Doublons_20050821174359.zip
    17.9 KB · Affichages: 18

ChTi160

XLDnaute Barbatruc
re mister
bonsoir le Fil

j'ai donc testé c'est Ok il faut toutefois que la liste de comparaison soit sans doublons sinon ils ne sont pas pris en compte (c'est juste une remarque) puisque les listes testées sont sensées etre composées d'éléments uniques Lol

encore Merci

bonne fin de Dimanche et que la peinture Sèche Lol
 

Ti_

Nous a quitté
Repose en paix
en fait il faut distinguer deux cas : s'il y a deux listes, la macro teste les valeurs de la liste 2 qui doublonnent avec celles de la liste 1 ; mais s'il n'y a qu'une seule liste, alors elle teste les doublons à l'intérieur de celle-ci.
 

bencourriel

XLDnaute Occasionnel
Que dire devant un tel accomplissement!

Bonjour à tous! Merci infiniment pour vos réponses.

Désolé d'avoir tardé à répondre. J'étais en formation à l'extérieur de la ville et en vacances dans les dernières semaines.

Je ne comprends pas tous les rouages de ta macro Ti_ mais elle fonctionne à merveille. Je vais digérer le tout puisque je suis novice en VBA; en décortiquant les différents éléments qui la composent.

Toutefois, pour le fichier XLA, je n'avais jamais vu ça auparavant ce type de fichier. J'arrive à travailler avec et c'est particulièrement simple pour des personnes particulièrement novice en Excel. Toutefois, je ne comprends pas la différence entre un fichier XLA et XLS bien que je vois clairement qu'il n'y a pas de tableur dans le fichier XLA. Est-ce la seule différence?

Vraiment chapeau à vous tous, maître excellois (et excelloises?)! Merci de partager des connaissances aussi utiles à travers le globe! Ti, si jamais tu passes dans le coin, j'offre la bière!

MERCI ENCORE!
;)
 
N

neoantiagent

Guest
salut

J'ai regardé ce post sur ce forum connaissant moi aussi des problèmes avec le vlookup de VBA.

Je fais des comparaisons de fichier plus ou moins lourds (environ 30000 lignes) et j'utilise vlookup entre deux fichiers différents pour savoir si d'une part les références du fichier A sont dans le fichier B et inversement puis d'autre part pour savoir si les valeurs liées à une référence du fichier A sont les mêmes que pour la même référence dans le fichier B

Exemple :
fichier A porte la valeur Banane dans le champ fruit pour la référence afrique
je veux vérifier que dans B on a pour afrique la valeur Banane dans le champ fruit. sinon ressortir la valeur des deux fichiers pour la référence afrique.

Avec un vlookup je monte à plus d'une minute par champ

J'ai bien aimé la macro ChercheparCol qui a été posté. Mais j'aurais aimé savoir si elle était adaptable à un tableau en deux dimensions.

Si oui comment ? (please help)

merci par avance de votre aide
 

Discussions similaires

Réponses
3
Affichages
301
Réponses
7
Affichages
370
Réponses
8
Affichages
666

Statistiques des forums

Discussions
312 310
Messages
2 087 128
Membres
103 479
dernier inscrit
Compta