Optimisation recherche BDD Excel lente

Résolu
Adirien Messages postés 84 Date d'inscription   Statut Membre Dernière intervention   -  
 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-t) où j'ouvre un form (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.ct.com/c/NABiBcfunfM

Merci de votre aide
Windows / Chrome 109.0.0.0

A voir également:

4 réponses

f894009 Messages postés 17268 Date d'inscription   Statut Membre Dernière intervention   1 713
 

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
Adirien
 

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 17268 Date d'inscription   Statut Membre Dernière intervention   1 713 > Adirien
 

Bonjour,

Se pencher, oui

0
Adirien > f894009 Messages postés 17268 Date d'inscription   Statut Membre Dernière intervention  
 

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

0
mariam-j Messages postés 1551 Date d'inscription   Statut Membre Dernière intervention   33
 

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
Utilisateur anonyme
 

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
Adirien
 

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 23538 Date d'inscription   Statut Contributeur Dernière intervention   1 582 > Adirien
 

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 1551 Date d'inscription   Statut Membre Dernière intervention   33
 

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

Données fixes ?

Données entrantes ?

Données sortantes souhaitées ?

0
Adirien
 

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