Optimisation recherche BDD Excel lente

Résolu
Adirien Messages postés 84 Date d'inscription samedi 11 mai 2013 Statut Membre Dernière intervention 27 janvier 2024 - 27 janv. 2024 à 09:40
 Adirien - 30 janv. 2024 à 16:45

Bonjour,

Je poste dans la partie VBA bien qu'il y a probablement des solutions autre que le VBA en retravaillant simplement les formules avec d'autres formules peut être moins gourmande.

Pour faire simple j'ai un fichier Excel (ci-joint) où j'ouvre un Userform (pour des raisons de taille de police et praticité de la saisie semi-automatique) pour choisir le nom d'une personne et sa fonction. Cela entraîne la recherche d'un certains nombre d'infos dans une base de données.

Cependant ça mouline sévère....Je pense que mon SI.CONDITIONS imbriqué avec 3 RECHERCHEX est assez indigeste, surtout répété dans un bon nombre de cellule.J'ai eu du mal à trouver d'autre solutions car j'ai interdiction de toucher à la BDD tel qu'elle est mis en forme donc j'avoue que je me suis cassé un peu la tête pour arriver à trouver la formule adéquate.

Peut-être que des fonctions INDEX/EQUIV mais je ne suis pas parvenu au résultat souhaité... Ou alors des fonctions à base de VBA peut être... Si quelqu'un a une piste ?

Voici le fichier : https://www.cjoint.com/c/NABiBcfunfM

Merci de votre aide
Windows / Chrome 109.0.0.0

A voir également:

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
27 janv. 2024 à 11:23

Bonjour,

Y a pas que la recherche qui est tres longue.

J'ai teste un filtre sur Quantite, c'est pareil.

La profusion de formules en est effectivement la cause

0

Après la feuille Quantité n'est pas gênant pour moi qu'elle soit lente. C'est la Feuil3 qui est l'interface utilisateur principal qui m'intéresse d'optimiser. 

Cela dit elle était plus rapide avant que je mette les formules dans là Feuil3 donc je soupçonne que actionner un filtre ne redeclenche pas l'exécution des formules en questions. 

Mais donc la solution est sûrement de se pencher sur une solution VBA dans ce cas ? 

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > Adirien
28 janv. 2024 à 07:29

Bonjour,

Se pencher, oui

0
Adirien > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
28 janv. 2024 à 08:08

Et pas une petite d'idée de comment le construire, via une fonction VBA ? 

0
mariam-j Messages postés 1038 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 28 avril 2024
28 janv. 2024 à 10:36

Bonjour,

A mon humble avis, ton truc est mal organisé, soit tu mets tout dans une seule feuille, soit tu fait une feuille par "fonction" avec les formules ad hoc en éliminant les redondances.

0
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 931
28 janv. 2024 à 11:53

Bonjour mariam-j

vu que dés le premier message, Adirien a écrit 

car j'ai interdiction de toucher à la BDD tel qu'elle est mis en forme

je pense qu'il en est conscient.

0

J'ai déjà construit des fichiers très similaires sans que tout ne soit dans la même la même feuille. Et comme il est expliqué je n'ai pas le droit de toucher à la BDD

La différence c'est que dans ce fichier j'utilisais des fonctions index equiv et la bdd de la feuille Qualité était construite de la même manière que la feuille Quantité. Là j'ai utiliser des fonctions RechercheX qui sont bien plus gourmande et le fait de les avoir répéter plusieurs fois dans une même formule ça n'arrange vraiment rien. Ce n'était pas indispensable pour la partie Quantité mais pour la partie qualité j'ai voulu aller plus simple mais probablement qu'un Index equiv marcherait aussi mais la formule va vraiment être très longue et complexe mais c'est à cause la construction de la bdd qualité...

Je pourrais aussi créer une macro qui créerai une copie plus exploitable de la bdd qualité mais c'est très hasardeux et un peu bricolo. 

Je sais qu'en VBA on peut créer des fonctions qui permettent de bien simplifier les choses tout en optimisant les performances mais là dessus je ne suis pas très doué.

Auparavant il y avait directement une macro qui remplissait la même fonction mais elle est complètement beugé et très mal écrite et je ne comprennais pas du tout comment elle était construite donc je préfère repartir de 0.

0
yg_be Messages postés 22733 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 avril 2024 1 477 > Adirien
Modifié le 28 janv. 2024 à 14:08

bonjour,

Ce pourrait-il que ce soit ton manque d'expérience en VBA qui fait que tu ne comprennes pas la macro existante?

Comment envisages-tu d'obtenir une meilleure macro, mieux écrite et sans bug?

0
mariam-j Messages postés 1038 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 28 avril 2024
Modifié le 28 janv. 2024 à 13:28

Combien et quels paramètres dans la base de données ?

Données fixes ?

Données entrantes ?

Données sortantes souhaitées ?

0

C'est très étrange régulièrement je ne suis pas notifié des réponses alors je crois que personne ne m'a répondu.

J'ai trouvé ma solution via des formules finalement.

J'ai concaténer mes 2 critères dans une autre colonne dans chaque bdd et fait une simple fonction index equiv et c'était bon tout etait parfaitement fonctionnel et instantané.

J'aurais préféré ne pas ajouter de colonne dans la bdd même si je l'ai masqué pour ne pas perturber l'utilisateur mais ça a le mérite de marcher.

Merci quand même 

0