Microsoft 365 RECHERCHEV/INDEX - Optimiser le temps de traitement pour la recherche dans un tableau à liste ?

loic.zambon

XLDnaute Nouveau
Bonjour,

J’essaie d'optimiser la formule INDEX que j'utilise pour éviter le temps de traitement.

Je vous pose la base de mon fichier Excel sur lequel je travaille

J'ai un onglet contenant un tableau. Ce tableau possède plusieurs colonne :
- Les plateformes sur lesquels travaillent les techniciens
- Les éléments de ces plateformes
- Les fonctions de chaque élément
- Urgence d’intervention requise

Dans un autre onglet j'ai un tableau avec les mêmes colonne. Le technicien qui intervient sur un élément ira remplir ce tableau via des listes déroulantes (fonction dépendant d'élément, lui-même dépendant de plateforme).

Je cherche à afficher automatiquement le niveau d'urgence lorsque le technicien a rempli les 3 listes.
Je cherche une solution via des forumes Excel car le document est utilisé sur la version Web via Teams donc le VB n'est pas supporté.
J'ai trouvé 2 moyens de parvenir à ce que je cherchais.


RECHERCHEV
J'ai ajouté une colonne à mon tableau avec toutes les colonnes désirée concaténées.
Je recherche la concaténation des listes remplis par le technicien dans le tableau pour sortir mon urgence.

Ca fonctionne bien et c'est plutôt rapide.
Par contre ça me force à créer cette colonne supplémentaire qui n'est pas désirée

INDEX
Avec l'aide d'EQUIV je cherche la concaténation des listes remplis par le technicien dans la concaténation du tableau.
Je ne maitrise que très peu ces 2 formules, c'est peut-être ça qui fait que ce n'est pas optimisé

Ca fonctionne bien.
Par contre chaque fois qu'un technicien touche à un des champs de la liste il faut du temps pour le traitement. Avec 1 ou 2 lignes c'est acceptable, mais nous avons généralement plus de 1000 intervention et ça devient désagréable à utiliser dans que j'arrive au 10 lignes.


Dans le fichier que j'ai joint à ce post vous trouverez un exemple miniature.
A gauche :
- le tableau qui représente les informations exhaustives (colonnes principales, degré d'urgence et concaténation pour RECHERCHEV)

A droite :
- Mon tableau à liste avec la formule INDEX
- Mon tableau à liste avec la formule RECHERCHEV

Les listes sont créées via les petits tableaux au sommet de la page.


La question ?

Est-ce qu'il y a un moyen d'optimiser ma formule INDEX pour ne pas arriver à plusieurs 10aine de secondes de traitement à chaque modification d'un champ analysé ?

Si ce n'est pas possible je ferais avec le RECHERCHEV en masquant la colonne.


D'avance merci.

Bonne journée,
Cordialement,
Loïc
 

Pièces jointes

  • TestFormule.xlsx
    16.7 KB · Affichages: 26
Solution
Bonjour
Essayer
VB:
=SOMMEPROD((Tab_matrice[Plateforme]=Tableau2[@Plateforme])*(Tab_matrice[Element]=Tableau2[@Element])*(Tab_matrice[Fonction]=Tableau2[@Fonction]);Tab_matrice[Urgent])

Sous réserve de pas pas avoir de doublons ayant des urgences différentes (ce qui est aussi vrai pour les autres solutions)

Utiliser un format n'affichant pas les 0 (pour les cas absents)

loic.zambon

XLDnaute Nouveau
Et par rapport au matriciel des INDEX ou RECHERCHEV , c'est similaire, plus lent ou plus rapide ?
Par formule ce sera de toute façon pénalisant.
Si PowerQuery fonctionne pour vous, ce sera plus rapide...

C'était plus lent.

Je vais me pencher sur le PowerQuery mais comme je comprends pas tout je vais encore tester la solution de Cisco avant.

Il faut que je regarde encore l'ensemble des solutions qu'on m'a proposé mais avec un tableau plus réaliste. J'ai réalisé ce matin qu'il se faisait sur l'ensemble des lignes Excel alors c'est peut-être ça qui créé mes ralentissements même sans calcul matricielle, vu que chaque fois que je teste une formule c'est tout la colonne urgence qui est recalculée.
 

Discussions similaires