Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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)

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,
Si vous avez la possibilité d'ajouter une colonne concatène avec (Plateform & Elément & Fonction) alors cela peut grandement améliorer la vitesse d’exécution.
Un essai en PJ
 

Pièces jointes

  • TestFormule.xlsx
    20.9 KB · Affichages: 14

loic.zambon

XLDnaute Nouveau
Bonjour à vous deux.

Merci pour la rapidité de la réponse.

@goube
Ce n'est pas ce que je cherchais à l'origine. Vu que les techniciens doivent entrer les infos sur ce qu'ils ont du dépanner et il y a plein d'autre champs qui ne sont pas utilisé pour les formules, comme la date ou la description du problème.

Par contre c'est hyper pratique pour la recherche. Je vais garder ça et le mettre en place quand j'aurais terminer mon document.

@sylvanu
Votre formule INDEX est bien moins compliquée que celle que j'utilise moi, par contre comme vous le mentionnez elle nécessite une nouvelle colonne comme la solution que j'avais trouvé avec RECHERCHEV.

J'ai appliqué votre formule à mon fichier car je peux effectivement ajouter une colonne


Mais est-ce qu'il n'y aurait pas une solution sans ajout de colonne qui ne soit pas aussi lourde que ma propre solution avec INDEX ?


Merci et bonne journée,
 

chris

XLDnaute Barbatruc
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)
 
Dernière édition:

merinos-BernardEtang

XLDnaute Accro
Il existe une toute autre piste: la solution query.

elle ressemble a la solution recherchev ... mais permet de retourner plusieurs info pour une question...
De plus elle ne penalise pas l'utilisateur si on recherche plusieurs reponces par ligne...

Et enfin, si on ne presente pas le tableau resultat a l'ecran, mais directement en TCD c'est infiniment plus rapide...
 

Pièces jointes

  • TestFormule.xlsx
    29 KB · Affichages: 7

loic.zambon

XLDnaute Nouveau
@chris
La solution que vous m'avez proposé fonctionne pour sortir de manière automatique les urgences.
Dans le fichier fonctionnel que j'utilise il y a une colonne supplémentaire avec des infos précises qui sont forcément unique. Donc j'obtiens bien le résultat attendu.

Par contre une fois que j'ai beaucoup de données entrée il y a de gros moment de latence pour chaque action que j'effectue sur le fichier.

@merinos
Il faut que je regarde votre solution. Je n'ai jamais utilisé Power Query.
 

CISCO

XLDnaute Barbatruc
Bonjour

Une autre possibilité en pièce jointe dans E14. Cf. les noms plageplateforme, plageelement et plagefonction dans le gestionnaire de noms.

Cette méthode ne donnera les bons résultats que si les données sont classées comme dans ton exemple.

Je ne sais par contre absolument pas si cela fonctionnera plus rapidement avec ces noms.

@ plus
 

Pièces jointes

  • TestFormulebis.xlsx
    15.7 KB · Affichages: 11
Dernière édition:

merinos-BernardEtang

XLDnaute Accro
Une derniere solution:
employer recherchev(quoi, ou, colonne, VRAI).
c'est solidement plus rapide.

Si toutes les recherches ne trouvent pas de reponces, il fau mettre:

= si(recherchev(quo;,ou ; 1 ; VRAI)=quoi ; recherchev(quoi; ou; colonne; vrai) ; FAUX )

cela fonctionne aussi, mais ce ne sera pas aussi net qu'un query.

Merinos
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…