Autres Chercher une valeur dans une liste

jom007

XLDnaute Nouveau
Bonjour à tous,
J'ai une formule qui marche mais je pense qu'elle n'est pas optimisée. Mon tableau commence à avoir beaucoup de formule et de macro, et il mouline un peu trop, alors j'aimerais optimiser ce que je peux.

Alors le but de ma formule et de renvoyer un numéro si la cellule appartient à une liste.
Dans l'onglet A, j'ai six listes avec des sites (liste_1, liste_2,etc...)
Dans l'onglet B, j'ai un énorme tableau de suivi d'activité, et dans ce tableau dans la colonne G, j'ai le nom du site.
J'aimerais renvoyer dans la colonne H, le numéro de la liste.
Donc la formule ressemble à ça:

=SI(NB. SI(liste_1;G2)>0;1;SI(NB.SI(liste_2;G2)>0;2;SI(NB.SI(liste_3;G2)>0;3;SI(.... Jusqu'à la liste 6

Je pense que la réponse se trouve dans la manipulation de EQUIV et INDIRECT...

Mais je ne suis pas très doué avec ces formules.

Je vous remercie
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Jom,
Sans fichier test, et au vu de vos explications, il y a toutes les chances que la réponse soit à coté de la plaque.
Ce qui demandera un rework, puis un autre ....
Ne serait il pas plus simple de fournir un fichier test représentatif avec un attendu ?

Sinon au pif, cela pourrait être :
VB:
=INDEX(ListeSites;EQUIV("*"&G2&"*";Liste1&Liste2&Liste3&Liste4&Liste5&Liste6;0))
A valider par Maj+Ctrl+Entrée car formule matricielle.
 
Dernière édition:

jom007

XLDnaute Nouveau
Bonjour Jom,
Sans fichier test, et au vu de vos explications, il y a toutes les chances que la réponse soit à coté de la plaque.
Ce qui demandera un rework, puis un autre ....
Ne serait il pas plus simple de fournir un fichier test représentatif avec un attendu ?

oui c'est vrai...
je bosse sur Calc, je viens d'extraire de mon tableau la partie qui me pose problème, j'ai enregistré en xslx, j'espère que tu pourras l'ouvrir

donc j'ai bien l'onglet A où sont mes listes, l'onglet B où dans la colonne A, je veux indiquer le numéro de la liste où est mon site.

Je vais regarder ta formule

Merci en tout cas
 

Pièces jointes

  • Fichier test.xlsx
    125.6 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
un fichier test représentatif avec un attendu
Un attendu c'est un ex qui aide à la compréhension.
En PJ un essai, mais je n'ai pas tout compris.
Si par ex en G2 je met CC10 alors cette formule en H2 renvoie 11 :
VB:
=SIERREUR(EQUIV("*"&G2&"*";Liste1&Liste2&Liste3&Liste4&Liste5&Liste6;0);"")
(A valider par Maj+Ctrl+Entrée car formule matricielle.)
Car CC10 est trouvé sur la 11eme ligne de la feuille A.
Mais je ne sais pas si c'est ce que vous cherchez.
( La formule complète "=SI(NB. SI(liste_1;G2)..." aurait aidé à la compréhension.

N'oubliez pas qu'un contributeur ne connait rien à votre fichier et ne sais même pas quel en est le but. :)
 

Pièces jointes

  • Fichier test (4).xlsx
    162 KB · Affichages: 2

jom007

XLDnaute Nouveau
Re,

merci de prendre le temps de vous pencher sur mon problème.

je vous envoie mon fichier "moins épuré" et je vous explique..

Mon projet est de faire un tableau de suivi d'activité, je renseigne dans un tableau des tâches à réaliser sur un site, sur un équipement et j'attribue la tâche à un agent, avec échéance, si la tâche est faite, ça raye la ligne..

Comme le nombre de tâche va excéder le millier de ligne par an, je voulais créer des boîtes qui permettraient de se rendre dans les onglets où n'apparaissent que les agents (onglet bleu), ou que les équipements (en vert) ou que les sites (orange), histoire pour qu'un agent n'ait qu'à ouvrir son onglet (oui je sais, il existe des filtres...)
Les sites sont trop nombreux, un peu de plus de cent, si j'en créé autant, le fichier sera trop lourd..
J'ai donc rassemblé les sites dans des UD, des unites de distribution. C'est sur ce dernier point que je travaille. (je bosserai sur les boîtes un peu plus tard...)

Pour qu'une ligne apparaisse dans un nouvel onglet, dans une colonne cachée , j'ai un code agent , un code équipement, un code lieu. J'aimerais avoir un code UD.

En travaillant aujourd'hui dessus, je ne souhaite plus attribuer un numéro (comme dit dans mon premier message) mais j'aimerais faire apparaitre le nom de la liste dans lequel appartient le site,

Dans mon fichier par exemple,
Dans l'onglet TRAVAUX, en H6, le site c'est Abattoirs, dans l'onglet SITES, il appartient à la liste UDCHARTREUSE, j'aimerais retrouver UDCHARTREUSE dans la cellule B6

la formule serait donc

=SI(NB.SI(UDPLAINE;H7)>0;"UDPLAINE";SI(NB.SI(UDPALADRU;H7)>0;"UDPALADRU";SI(NB.SI(UDCHARTREUSE;H7)>0;"UDCHARTREUSE";SI(NB.SI(UDSAINT;H7)>0;"UDSAINT";SI(NB.SI(UDMARAIS;H7)>0;"UDMARAIS";SI(NB.SI(UDCENTRE;H7)>0;"UDCENTRE";SI(NB.SI(UDNANTIN;H7)>0;"UDNANTIN";0)))))))

Donc la formule bien évidemment fonctionne, mais je me demandais si comme vous l'avez fait tout à l'heure, cela peut fonctionner avec des INDEX, EQUIV, INDIRECT


Ensuite, en ayant un site attribué par ligne, je peux démarrer une liste avec une incrémentation et cela alimentera mon onglet UD PLAINE dans mon exemple

1 UDPLAINE
2 UDPLAINE
3 UDPLAINE
...

Les colonnes A, B, C, D sont normalement cachées...

Voilà, j'espère avoir été assez clair.

Merci
 

Pièces jointes

  • Tâches AEP_test.xlsx
    326.2 KB · Affichages: 2
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
On est très loin du fichier test. :)
Ma formule initiale conduit à une usine à gaz pour retrouver la colonne, et en matriciel sur une telle plage ça rame plus que les NB.SI.
Je vous propose beaucoup plus rapide:
1- Dans la feuille SITES construire la liste des sites et UD, avec deux formules :
VB:
=SI(INDEX(ListeUD;P2;O2)=0;"";INDEX(ListeUD;P2;O2))
=SI(Q2="";"";INDEX(UDSITE;O2))
Ce qui est rapide car la matrice est courte.
2- Dans TRAVAUX la formule devient enfantine :
Code:
=SIERREUR(RECHERCHEV(H6;SiteUD;2;FAUX);"")
C'est, je crois le plus rapide en terme d'exécution.
 

Pièces jointes

  • Tâches AEP_test (1).xlsx
    438.8 KB · Affichages: 6

jom007

XLDnaute Nouveau
Bonjour,

je regarde ça que maintenant, j'ai pas vu la notification du site.
oui j'ai fait un fichier test car je voulais anonymiser mon travail mais tâche bien trop fastidieuse...

dans mon fichier , j'ai des tonnes de recherchev et de lien vers d'autres onglet... il devient lourd à gérer...
je que je vous ai demandé, n'est qu"une partie que j'aimerais améliorer... je risque de vous solliciter de nouveau.

Je regarde et je vous dis merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Voir docs :
 

Discussions similaires

Réponses
9
Affichages
395

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin