IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Optimisation de recherche dans des plages


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2013
    Messages : 27
    Par défaut Optimisation de recherche dans des plages
    Bonjour

    Je souhaite tester la présence d'une valeur dans une plage. Le Hic c'est que le nombre d'itération va être monstrueux (plusieurs dizaines de milliers) et les plages dans lesquelles on recherche les valeurs vont être très grandes (un millier de valeur). Je cherche donc le moyen le plus rapide de faire cela.

    Je pense principalement à deux manières de faire:
    1. Utiliser la methode .find sur mes ranges
    2. Une boucle for each element in range

    Je me demande s'il existe d'autres methodes alternatives auxquelles je n'aurais pas pensé (genre une fonction integrée), et surtout quelle sera la plus rapide de toutes.

    Merci d'éclairer ma lanterne sur ce sujet.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    1. Utiliser la methode .find sur mes ranges
    Technique la plus rapide.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2013
    Messages : 27
    Par défaut
    Merci à toi.


  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    faire une recherche sur plusieurs millier de ligne est un sujet récurent

    qui a été traité des dizaines de fois et de différente manière

    la méthode find et find next est en effet une méthode plus classique si je puis m'exprimer ainsi mais ca n'est pas la plus rapide

    je te suggère de faire une recherche sur les variable tableau ainsi que les dictionnaires(Scripting dictionnary) tu a plusieurs discutions a ce sujet

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2013
    Messages : 27
    Par défaut
    J'ai finalement opté pour le scripting dictionnary.

    Je viens de tester le même code en faisant 8000 recherches successives dans une range de 4000 lignes. Le verdict est assez hallucinant.

    Version en utilisant range.find: temps moyen d'execution 54,9 secondes
    Version en utilisant le scripting dictionnary: temps moyen d'execution 0,3 secondes.

    Je crois que j'ai ma réponse quant à l'efficacité respective des différentes méthodes.

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Cette différence m'étonne. Peux tu nous montrer les deux codes que tu as comparé ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche dans une plage dans des fichiers fermés
    Par kikuyu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2008, 10h20
  2. Optimiser la recherche dans des fichiers
    Par Napalm51 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/01/2008, 14h28
  3. [FPDF] Rechercher dans des pdf
    Par snike dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/09/2005, 09h58
  4. [date] Recherche dans une plage de dates
    Par astro84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/06/2005, 17h13
  5. Optimiser les jointures dans des requêtes
    Par klereth dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 23/04/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo