Formules / VBA ? Optimisation de recherches (plages dynamiques)

Int0x

XLDnaute Occasionnel
Bonjour le forum,

Tout d'abord, merci à tous ceux qui vont prendre un peu de temps pour réfléchir à mon problème (surtout que je débute en VBA).

Je suis en train de créer un fichier sur les coûts de revient de différents articles.
L'idée générale de ce fichier:
* chaque article a un nombre d'opération pour être fabriqué (opé-1, opé-2, etc...) avec des paramètres propres à chaque opération (machine, temps, nombre d'opérateur, etc...).
* chaque opération (qui est donc liée à une machine) va alimenter l'onglet de la machine concernée (un onglet par machine, limité à 2 dans le fichier exemple).
* ainsi, le budget associé à chaque machine se réparti en fonction du temps d'occupation de la machine

Voilà, en (très) gros l'idée.

Un exemple est plus parlant:
J'ai un article 1, qui est fabriqué à l'aide de 2 opérations:
- opé 1: il passe sur la machine 1, pour un temps de 0.15 s par pièce
- opé 2: il passe sur la machine 2, pour un temps de 0.12 s par pièce

Quand je met à jour l'opération 1 (bouton MAJ Opé-1), il va automatiquement alimenter l'onglet 001 (lié à la machine 1). De même pour l'opération 2.

Je fais pareil pour tous les articles, qui vont s'incrémenter dans chaque onglet. Les budgets par machines se répartissent en fonction du temps de mobilisation, et un prix unitaire est calculé.


Mon problème:
Le fichier que j'ai réalisé fonctionne bien pour un petit nombre de ligne, comme les 47 articles de l'exemple.
Le souci, c'est que j'ai de nombreuses références (allez, disons 2500) et que du coup mes "mises à jour" sont très longues. Cela vient du fait qu'en colonne S, AA, etc...j'utilise la formule:

=RECHERCHEV(CONCATENER(A4;$L$2);INDIRECT(CONCATENER("'";DROITE(RECHERCHEV(L4;Settings!B:D;2;0);3);"'!M:O"));2;0)

Et que ce calcul, qui s'actualise sur 2500 lignes x 10 colonnes, bah forcément ca bouffe de la ressource.
Auriez-vous une idée d'optimisation ?
Comment pourrais-je obtenir les résultats de Prix / Unité (colonnes S, AA, etc...) de manière assez rapide ?

J'ai l'impression que l'aspect "alimentation des onglets" est correct, mais que je suis limité pour aller chercher le résultat (car il s'agit de recherches "dynamiques")

Par avance merci pour vos idées,
Int0x
 

Pièces jointes

  • Revient - Exemple.xls
    308 KB · Affichages: 74

Dranreb

XLDnaute Barbatruc
Re : Formules / VBA ? Optimisation de recherches (plages dynamiques)

Cela aurait essentiellement une incidence sur les Property NumÉlé (Let et Get) tout à la fin.
Je vous suggère de mettre en tête du module, juste derrière la Option Explicit:
VB:
Const ColDébutOpé = 12, NbrColParOpé = 8, NbrOpé = 10
Et à y remplacer ces 3 nombres par ces noms de constantes.
puis ensuite vous passerez le NbrColParOpé à 10. Pour le rapatriement de la valeur de Prix2, faites une instruction sur le modèle de celle qui rapatrie le Prix1. Veillez aussi à récupérer le bon nombre de colonnes dans TBdD au début de la procédure.
Commencez à mettre un peu les mains dans le moteur pour acquérir un minimum de maitrise de cette programmation !
Bon courage !
Cordialement
 

Discussions similaires

Réponses
46
Affichages
861

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50