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

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
432
Réponses
3
Affichages
210

Statistiques des forums

Discussions
312 361
Messages
2 087 613
Membres
103 607
dernier inscrit
lolo1970