Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro qui remplace =si(esterreur(recherchev(

fbussi

XLDnaute Nouveau
Bonjour à tous et à toutes,
Je suis un nouveau membre, j'ai fait pas mal de recherche sur le forum et n'arrive pas à trouver une solution à mon problème.
Je travail sur de gros fichier excel qui comporte les tarifs de différent fournisseur. La société où je travail gère 100000 références et mes fournisseurs gèrent chacun plus de 800000 références.
J'utilise actuellement la formule excel =si(esterreur(recherchev(... et ça prend un temps fou (plusieurs heures) à me donner les tarifs. Je pense qu'une macro m'aiderai à traiter la recherche plus rapidement mais je n'y connait pas grand chose dans ce language.
Je vous ai joint un fichier d'exemple, la Feuil1 correspondrait au tarif de mon fournisseur et la Feuil2 a ma base de donnée, ma formule excel se trouve en Feuil2 cellule B2.
Je vous remercie d'avance de votre aide à tous et à toutes.
Fabien
 

Pièces jointes

  • Exemple Recherche.xlsx
    9.3 KB · Affichages: 45
  • Exemple Recherche.xlsx
    9.3 KB · Affichages: 54
  • Exemple Recherche.xlsx
    9.3 KB · Affichages: 54

Dranreb

XLDnaute Barbatruc
Re : Macro qui remplace =si(esterreur(recherchev(

Bonjour

J'allais le dire. Il ne saurait y avoir de différence si le Dictionary est utilisé à travers un Variant/Object. Seulement si c'est déclaré As Dictionary.
 

Paf

XLDnaute Barbatruc
Re : Macro qui remplace =si(esterreur(recherchev(

Re

merci @ Staple

@ Dranreb : c'est pourquoi j'avais noté "après essais de diverses déclarations et augmentation des lignes à 65 000, pas vu de différences notables."

Peut être serait ce sensible pour des volumes beaucoup plus importants.

Bonne journée
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Macro qui remplace =si(esterreur(recherchev(

Bonsoir,

Voir post 22/3/2013:
https://www.excel-downloads.com/thr...rchev-pour-tableaux-taille-importante.203411/

1- Si la table de recherche est triée:

Si la valeur cherchée est un code et si la table est TRIEE, on peut spécifier le paramètre VRAI.
La recherche est alors faite par DICHOTOMIE et peut être x100 + RAPIDE puisqu'il suffit de quelques
accés pour retrouver le code. C'est TRES IMPORTANT lorsque la table est de taille importante et que
la formule Recherchev() est recopiée x1000 fois (Avec FAUX , Excel consulte la table SEQUENTIELLEMENT).
Pour vérifier si le code existe (on ne récupère pas #N/A mais la valeur inférieure), il faut écrire:

=SI(RECHERCHEV(CodeCherché;Articles;1;VRAI)=
CodeCherché;RECHERCHEV(CodeCherché;Articles;2;VRAI);"Inconnu")

2- Si la table n'est pas triée, utiliser une fonction personnalisée matricielle:
Si on modifie les 2.600 valeurs cherchées dans un tableau de 20.000 items,
le temps de recalcul n'est pas visuellement mesurable (5 sec pour recherchev()).
En outre, RechvM() fonctionne également lorsque la chaîne cherchée est >255 caractères.

http://boisgontierjacques.free.fr/fichiers/Cellules/rechvJB.zip

Si la fonction doit retourner plus de 65.000 lignes
http://boisgontierjacques.free.fr/fichiers/Cellules/RechvPlus65000Lignes.xlsm

Fonction perso + rapide que Fonction Recherchev()

JB
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
465
Réponses
3
Affichages
230
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…