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
Salut,

non ce n'est pas normal un temps pareil; si tes données sont uniques au niveau d ela colonne où tu cherches, il trouveras la 1ere pas les autres..
POur distinguer ce qui est <> , tu peux aussi faire comme ceci:
la 1ere liste en couleur, la seconde en blanc et avec LES MEMES STRUCTURES et tu lesmets l'une sous l'autre et puis fais un filtre élaboré avec extract sans doublons, ca te donnera les enregistrements UNIQUES des 2 listes
AU fait un rechercheV ou index/equiv qui est meilleur, tes données de la colonne de recherche doivent être du meme type !!!

Bon travail

Patrick
 

bencourriel

XLDnaute Occasionnel
Merci Patrick pour ta réponse. J'avais même pas penser à ACCESS puisque je dois traiter les données avec des formules dans EXCEL... Je pourrais exporter le tout dans ACCESS après le traitement et faire une requête. Pas bête... Merci bien. Et bonne nuit! J'avais pas remarqué qu'il était pratiquement minuit en France... Moi je suis cloué au bureau pour toute la soirée. Ciao.

;)
 

ChTi160

XLDnaute Barbatruc
Salut bencourriel
bonsoir Patrick

en pièce jointe un essais que j'ai testé sur 22000 lignes par feuilles(quelques secondes)
dans le fichier moins de ligne car trop gros tu adaptes et tu nous tiens au courant [file name=Essai_20050820003304.zip size=46152]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Essai_20050820003304.zip[/file]
 

Pièces jointes

  • Essai_20050820003304.zip
    45.1 KB · Affichages: 106

Ti_

Nous a quitté
Repose en paix
J'ai fait mes propres tests et effectivement sur un échantillon de 60000 lignes de codes alphanumériques, les temps de recherches avec des NB.SI(), EQUIV() et autres sont rédhibitoires sur ma machine vieillissante (elle tourne à 1.2 gHz).
J'ai alors essayé de passer par des fonctions VBA, mais ça ne changeait rien, alors j'ai utilisé une macro lancée à la demande via un bouton. Un rapide calcul sur 1000 boucles de ce premier algo m'a permis d'estimer le temps total nécessaire à environ 20 min (sur ma machine).
Je suis donc passé par une recherche sur des chaînes Soundex et là, je suis tombé à 5 min pile, ce qui est déjà appréciable.
Comme mes codes alphanumériques ont été générés aléatoirement (mais je suppose que sur ta base réelle ils ne doivent être guère différents) j'ai un peu adapté le Soundex, ce qui m'a permis de gagner encore un peu en rapidité.

Evidemment, je suppose qu'un détour par ACCESS ou même une requête SQL doit permettre de traiter ta base bien plus rapidement, mais bon, c'est un exercice, qui peut d'ailleurs être repris tel quel.

Pour que le fichier passe en dessous de 50 ko, j'ai limité l'exemple à 200 lignes, mais il est facile de recréer un échantillon de 60000 lignes en modifiant la constante NbLignes en début de module, puis en appelant la macro 'Echantillon' qui va générer les pseudo-références alphanumériques.
Ensuite il faut regarder dans la barre de status pour avoir les délais d'exécution de la boucle de traitement (qu'on active via le bouton).
Si certains d'entre vous font des tests sur leur machine, ça m'intéresse d'avoir les résultats.

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

Message édité par: Ti_, à: 20/08/2005 19:03
 

Pièces jointes

  • ChercheparSoundex.zip
    38.3 KB · Affichages: 111

_Thierry

XLDnaute Barbatruc
Repose en paix
onsoir Ti, Jean-Marie, Excalibur, Michael, BenCourriel, pat1545,

j'ai donc profité d'avoir un peu d'artillerie à la maison pour le week-end :

En appliquant la constante Const NbLignes = 60000 et en générant les lignes avec 'Echantillon' voilà mes résultats :

PENTIUM III 800 MHz/ 512 RAM / Win Me / Office 2000
Première tentative => 09:02 (avec un tas de sbinz ouverts et plein de tests avants)
Seconde Tentative après Reboot 07:48 et juste Excel ouvert


PENTIUM IV 3.4 GHz / 1024 RAM / Win XP Home S/P 2 / Office Pro 2003
Première tentative => 03:03 (avec un tas de sbinz ouverts et plein de tests avants)
Seconde Tentative après Reboot 03:11 et juste Excel ouvert (!!!!)


CENTRINO 1.7 GHz / 1024 RAM / Win XP Pro S/P 2 / Office Pro 2002
Première Tentative 02:56 (Juste Booté avec uniquement Excel)


ATHLON XP/mobile 1.8 GHz / 512 RAM / Win XP Home S/P 1 / Office 2000¨
Première Tentative 02:28 (Juste Booté avec uniquement Excel)


C'est interressant, surtout pour AMD !

Et sinon toujours méga-génial ton boulot Mr Magic Ti ! (je ne connaissais pas Frédéric BROUARD)

Bonne Soirée
[ol]@+Thierry[/ol]

Message édité par: _Thierry, à: 20/08/2005 22:40
 

Discussions similaires

Réponses
3
Affichages
274
Réponses
8
Affichages
616