Formules / VBA ? Optimisation de recherches (plages dynamiques)

  • Initiateur de la discussion Initiateur de la discussion Int0x
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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😀;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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
145
Réponses
5
Affichages
61
Réponses
7
Affichages
166
Retour