Renvoyer plusieurs valeurs en fonction d'une commune

Bonjour à toutes et tous,

Je sollicite votre aide (à nouveau) pour un petit blocage sur Excel.

J'ai un ficher qui comporte plusieurs onglets. Dans un des onglet, je voudrais pouvoir afficher les contenus des autres onglets en fonction d'une valeur choisie.

Plus clairement, dans un onglet X, je voudrais pouvoir sélectionner un intitulé de poste et qu'en fonction du choix, cela me renvoie toutes les valeurs correspondantes qui se trouveraient dans les autres onglets.

Je vous joins le fichier correspondant.

Je suis assez mauvais pour expliquer par écrit ce que je souhaite donc excusez-moi par avance si j'ai besoin de ré-expliquer plusieurs fois.

Merci pour votre aide

17duerp-2025.zip (1.19 Mo)

Bonjour,

Si j'ai bien compriis tu veux créer une listbox en C3 de la page DUERP, cette listbox contenant les métiers situés en C3 des diférentes pages UT1 à UT11
Est ce bien celà ?
Et si oui, que veux tu faire ensuite ?

Bonjour,

Merci pour la réponse

En fait la liste est déjà créée.

Ce que j'aimerai c'est qu'en choisissant un métier en C3, cela me renvois les infos correspondantes dans les différentes colonnes de l'onglet DUERP. Infos récupérées dans les UT correspondants au métier sélectionné en C3.

J'espère que c'est plus clair comme ça

Non pas tout à fait,

Je te propose un fichier qui réalise ce que je crois avoir compris.
Si les données qui apparaissent ne conviennent pas à ce que tu veux, inscris les moi manuellement ppur que je puisse voir ce quee tu attends

Bonjour,

En D3 la formule suivante peut fonctionner

=LET(shtName;JOINDRE.TEXTE("";VRAI;FRACTIONNER.TEXTE(B1;" "));
searchCol;INDIRECT("'"&shtName&"'!C:C");
returnCols;CHOISIRCOLS(INDIRECT("'"&shtName&"'!D:Q");1;2;8;-3;-2;-1);
FILTRE(returnCols;searchCol=DUERP!C3;"erreur"))

Mais attention, c'est très lourd d'utiliser INDIRECT.

Bonjour,

Essaie, en C4 :

=LET(tbl;ASSEMB.V('UT1:UT11'!C1:I1000);FILTRE(tbl;PRENDRE(tbl;;1)=C3))

Daniel

Ah super DanielC, je ne savais pas du tout qu'on pouvait stacker les feuilles comme ça !

Du coup ma formule devient (pour renvoyer uniquement les colonnes demandées)

=LET(tbl;VSTACK('UT1:UT11'!C1:Q1000);
returnCols;CHOOSECOLS(tbl;2;3;9;-3;-2;-1);
FILTER(returnCols;TAKE(tbl;;1)=DUERP!C3;"erreur"))

Bonjour tout le monde,

Je vais essayer de répondre à tout le monde dans ce post.

Tout d'abord un grand merci à tous pour vos réponses et le temps que vous y avez consacré.

@saboh12617, la première formule proposée fonctionne à la perfection LA seconde me renvoi un message d'erreur de type #NOM?

@DanielC, la formule que vous me proposez ne renvoie pas les informations souhaitées puisqu'elle ne tient pas compte du fait que les colonnes voulues ne sont pas les mêmes que dans les autres onglets.

@Jacky, je n'ai pas pu faire fonctionner votre fichier car mon ordi bloque l'utilisation des macros

Avant de clore le sujet, je me permets une dernière question : peut-on utiliser la formule depuis un fichier différent? C'est à dire de déporter l'onglet DUERP en tant que fichier à part entière et de continuer d'utiliser la formule?

Ah excusez moi je vous l'avait recopiée en anglais…

Ci-après la traduction

=LET(tbl;ASSEMB.V('UT1:UT11'!C1:Q1000);
returnCols;CHOISIRCOLS(tbl;2;3;9;-3;-2;-1);
FILTRE(returnCols;PRENDRE(tbl;;1)=DUERP!C3;"erreur"))

C'est la formule à utiliser (merci à DanielC encore une fois) car elle sera beaucoup plus "légère" en terme de calcul que la 1e que je vous ai proposé).

Pour ce qui concerne l'utilisation d'un autre classeur… Personnellement, je le déconseille toujours fortement car c'est sujet à plantages, erreurs de liens, problèmes de fichiers ouverts/fermés, etc.

En plus la formule utilisée est assez "lourde". Je vous propose une alternative :

Vous pouvez, si vous souhaitez "masquer" les onglets de référence (UT…) procéder comme suit :

  1. Vous les masquez
  2. Dans le ruban, onglet révision, vous verrouillez le classeur (pas la feuille!)

MERCI beaucoup !

Cela fonctionne parfaitement bien.

Je clôture le sujet avec tous mes remerciements

Merci pour votre retour, bonne fin de journée à vous aussi.

Bonjour à toutes et tous,

Je relance le fil sur ce sujet (je ne sais pas si je peux le faire ).

La solution proposée par saboh12617 semblait fonctionner, seulement, après utilisation, je me suis aperçu que certaines cellules comportaient des manques concernant des informations qu'elles étaient censées renvoyer.

Je vous joins le fichier correspondant.

Voici ce que j'aimerai que cela fasse (sans macro si possible car mon ordi/service IT bloque leur utilisation) :

J'ai une liste déroulante (déjà créée et fonctionnelle) en C3 qui me permet de choisir un intitulé de poste.

Ce que j'aimerai, c'est que lorsque je choisi un poste, les informations contenues dans les cellules correspondantes des onglets concernés, se renvoient dans les colonnes de l'onglet "DUERP"

(Dans l'idéal, mais ça c'est dans le pays des bisounours, j'aimerai pouvoir dissocier les onglets en fichiers à part entière et que le renvoi fonctionne malgré tout)

13duerp-2025.zip (1.30 Mo)

Merci pour votre aide

Bonjour,

Il y avait une erreur assez étrange, car j'utilisais 2 tableaux différents pour le filtrage et le renvoi des données… C'est à éviter.

J'ai donc regroupé les données dans un unique tableau (clés = nom du poste, valeurs = lignes du tableau) et le problème semble résolu.

Essayez la formule ci-après :

=LET(tbl;ASSEMB.V('UT1:UT11'!C3:Q1000);
workCols;CHOISIRCOLS(tbl;1;2;3;9;-3;-2;-1);
EXCLURE(FILTRE(workCols;PRENDRE(workCols;;1)=DUERP!$C$3;{0\"Aucune correspondance"});;1))

J'aurai du prendre plus de précautions

Bonjour,

Et merci à nouveau pour votre aide.

Votre formule me renvoie un message d'erreur :

image

Le 0\"Aucune semble ne pas convenir à Excel

Bien à vous.

Re,

Voir ci-joint.

Mais je remarque :

J'avais écrit la formule dans la feuille "correcte", sans la recopier dans votre tableau. Voyez que TOUTES les infos sont bien présentes.

Ensuite j'ai recopié la formule dans votre tableau, identique, et là il manque des infos. Les fameux trous. Je ne comprends pas. J'ai vérifié le format de cellule, il me semble OK. Avez-vous mis un format conditionnel particulier ? ou autre chose ?

Parce que la formule est correcte, c'est quelque chose d'autre qui masque le résultat.

14duerp-2025.zip (1.23 Mo)

Re,

Oui, j'avais mis une mise en forme conditionnelle qui masque les cellules où il y avait "0" inscrit en écrivant en blanc pour que cela soit plus esthétique

En supprimant cette mise en forme, les trous se sont complétés

Tant pis pour l'esthétisme du coup.

Merci encore pour votre aide, la formule fonctionne parfaitement

Bonne journée

Oui je m'en doutais, c'est possible de le faire dans la formule et d'éviter le format conditionnel. En plus c'est assez lourd les formats conditionnels donc votre fichier devrait etre un peu plus rapide.

Voyez ci-après avec le SI.

Si vous avez encore le problème de formule incorrecte, éditez la formule à la main ou essayez de remplacer le "\" par ".", il y a peut etre une différence entre la version EN et FR à ce niveau (je dois utiliser Conversion automatique de formules Excel FR/EN pour traduire les formules, parfois il reste des petits couacks).

=LET(tbl;ASSEMB.V('UT1:UT11'!$C$3:$Q$1000);
workCols;CHOISIRCOLS(tbl;1;2;3;9;-3;-2;-1);
res;EXCLURE(FILTRE(workCols;PRENDRE(workCols;;1)=DUERP!$C$3;{0\"Aucune correspondance"});;1);
SI(res=0;"";res))

Pour répondre à votre question de fichiers séparés, selon moi ce n'est pas possible. Vous pouvez masquer les feuilles si vous voulez (et verrouiller la structure du classeur pour empêcher les utilisateurs de les afficher).

Merci beaucoup tout fonctionne parfaitement.

Je clôture le sujet avec mes plus sincères remerciements

Bonne journée à vous.

Je vous en prie, bonne journée à vous aussi.

Rechercher des sujets similaires à "renvoyer valeurs fonction commune"