Liste déroulante plusieurs critères plusieurs résultats

Muarthan

XLDnaute Nouveau
Bonjour à tous,

J'ai un problème avec mon fichier excel, je n'arrive pas a créé une liste déroulantes avec deux critères différents sans que celui-ci affiche qu'un seul résultats alors qu'il devrait en avoir plusieurs dans la troisième liste déroulantes.
Il y a aussi une petit question qui n'est pas non plus un point bloquant, est-il possible que dans la liste déroulantes les doublons et les case vides n'apparaissent pas.

Est-ce que quelqu'un pourrai m'aider s'il vous plait, je n'arrive pas a trouver de solution pour ce problème.
Surtout en évitant les macro.

Merci d'avance

Bien cordialement
 

Pièces jointes

  • exemple1_listederoulante_plusieurscriteres_plusieursresultats.xlsx
    9.2 KB · Affichages: 56

Muarthan

XLDnaute Nouveau
Bonjour,

Merci infiniment je vais incorporer c'est information dans le fichier original pour voir si tout fonctionne.
C'est exactement ce que je cherchais car je ne suis pas fort en macro et mon fichier original a plus de 2500 donné pour la colonne 1, 30 sur la colonne 2 et énormément aussi sur la colonne 3.
Vue qu'il existe plusieurs fichier lier dont une base de donné sur excel je pense qu'il y aurai eu un problème d'incompatibilité avec les macros, les formules c'est la meilleur solution.
Si j'ai des difficultés à adapter ces formules je reviendrai vers vous.

merci beaucoup

Bien cordialement
 

Dugenou

XLDnaute Barbatruc
pas de pb on peut encore améliorer et rendre un peu plus automatique le calcul des listes. Il faut bien faire attention à ce que les formules matricielles soient recopiées sur plus de lignes que de valeurs différentes.
Cordialement

Edit : en pj le même fichier pouvant accepter une table de 10 000 lignes. Au delà on commence à avoir des temps de calculs non négligeables
 

Pièces jointes

  • muarthan2.xlsx
    15 KB · Affichages: 63
Dernière édition:

Muarthan

XLDnaute Nouveau
Bonjour,

Je vous remercie beaucoup pour votre aide.
Je ne suis pas très douer sur excel mais je me débrouille comme je le peux,
néanmoins je n'ai jamais utiliser une formule avec { et }
J'ai essayer de faire comme vous me l'avez dit mais la formule apparaît dans la cellule au lieu de l'exécuter, pourtant j'ai bien fait ctrl+maj+entrée comme indiqué.
je ne comprend pas ce qui ce passe, faut il faire autre chose avant?

Merci,

bien cordialement
 

Dugenou

XLDnaute Barbatruc
Bonsoir,
Les 3 touches à utiliser sont ctrl; maj prov (la fleche pas le cadenas) et enter
Techniquement : tu appuies en même temps sur ctrl et majprov à gauche du clavier avec index et majeur (les deux touches sont l'une au dessus de l'autre), tu laisses enfoncé et tu appuies une fois sur enter.
Si tu as bien fait les {} apparaissent autour de la formule
 

Muarthan

XLDnaute Nouveau
Bonjour,
oui c'est exactement ce que j'ai fait mais la fonction ne fait pas son calcul, elle reste simplement écrite.

Sinon je vais essayé de traduire la fonction pour mieux la comprendre.

{=INDEX($A$1:$A$100;MIN(SI($A$3:$A$100<>"";SI(NB.SI($I$1:I1;$A$3:$A$100)=0;LIGNE($A$3:$A$100)))))&""}

Recherche dans le tableau A1 à A100, le minimum si, la colonne A3 à A 100 différente de "Rien ou vide", alors, si, le nombre I1; alors le résultat sera de A3 à A100 le tout égal à zéro, sinon ligne de A3 à A100.... et "vide"

Je pense que ce n'est pas une bonne traduction car ce que je comprend c'est que la formula va compter un nombre par rapport a la colonne A, mais je n'arrive pas bien a comprendre son fonctionnement vue que je n'arrive même pas a faire entrer les { } dans la formule, je ne sais pas ce qui ce passe.

par contre ce qu'il faut savoir c'est que les cellules avec une liste déroulante il y en a pour tout les jours de l'année.

Je vais vous envoyer le fichier original pour mieux comprendre ce sera plus simple. sur l'onglet Donnés ce trouve toutes les informations qui proviennent d'une base de donnés Access, ces informations change toute les semaines.
Dans l'onglet RTP 2017 c'est là ou les conducteur de travaux sélectionne les deux listes déroulantes, le code de chantier (Index chantier) et introduit manuellement, puis il y a une liste déroulante pour les métiers et une autre pour les sous-chantier.

tout le reste des onglets et ligne fonctionnent sans problème, c'est juste la sélection des sous chantier qui ne va pas étant donné qu'il ne choisissait qu'une seule correspondance, ce que j'ai essayé de vous montrer avec l'exemple envoyé avant.

voila je pense que c'est plus simple de voir le problème sur le fichier final.

Je vous remercie beaucoup

Bien cordialement
 

Pièces jointes

  • Planning DR.xlsx
    947.8 KB · Affichages: 41

Dugenou

XLDnaute Barbatruc
Bonjour,
on dirait que vous avez essayé de mettre les {} avec les touches du clavier : dans ce cas le contenu de la cellule est considéré comme du texte. Il est impératif de valider la première cellule avec ctrl+maj prov+enter. Ensuite il faut recopier vers le bas.
Dans le fichier joint j'ai aussi créé les zone nommées pour utilisation dans les listes déroulantes mais je ne sais pas où vous voulez les afficher.
Cordialement
 

Pièces jointes

  • muarthan3.xlsx
    987 KB · Affichages: 31
Dernière édition:

Dugenou

XLDnaute Barbatruc
Re,
Traduction de la formule :
{=INDEX($A$1:$A$100;MIN(SI($A$3:$A$100<>"";SI(NB.SI($I$1:I1;$A$3:$A$100)=0;LIGNE($A$3:$A$100)))))&""}

Affiche la valeur de la colonne A (INDEX...) qui est à l'emplacement dont le N° est le plus petit (MIN) N° de ligne (LIGNE($A$3:$A$100)) que tu trouves quand la colonne A n'est pas vide (SI($A$3:$A$100<>"";) et qui ne se trouve pas déjà dans la liste au dessus de I2 (SI(NB.SI($I$1:I1;$A$3:$A$100)=0)
Dans votre fichier les A doivent être remplacés par les lettres des colonnes où se trouvent les données à lister.

En fait il faut lire d'abord le si(...; si(nb.si ...;ligne(.)) : ceci crée une matrice/ un tableau virtuel qui a autant de lignes que la plage (ici a1:a300 soit 300 lignes) chaque ligne de ce tableau virtuel contient un N° de ligne (si les deux conditions sont remplies) ou faux si elle ne le sont pas. Les conditions sont : valeur de la colonne A différente de "" (non vide) et valeur ne se trouvant pas en $I$1:I1 (quand on recopiera en bas $I$1:I1 se transformera en $I$1:I2 etc) : c'est cette deuxieme condition qui élimine les doublons. De cette matrice je prends le minimum : donc le premier N° de ligne qui répond aux conditions et j'affiche la valeur de cette ligne que je trouve dans la colonne A (index (a1:a100; N° de ligne)
Sur la ligne suivante, quand je recopie en bas : la première valeur sera affichée au dessus donc la deuxieme condition ne sera pas remplie pour cette valeur (NB.si ()=0) et on affichera la seconde ligne qui répond aux conditions.
Remarque : comme la matrice centrale SI($A$3:$A$100<>"";SI(NB.SI($I$1:I1;$A$3:$A$100)=0;LIGNE($A$3:$A$100)) est recalculée sur chaque ligne on atteint rapidement des temps de calculs importants.

Cordialement
 

Muarthan

XLDnaute Nouveau
Merci beaucoup,

je commence a comprendre mieux la formule, j'ai aussi compris comment introduire les {}
en faite c'est tout bête on ne les écrits pas il suffit tout simplement de faire ctrl + maj + entré comme vous l'aviez dit.

J'ai ajusté la formule a la colonne approprié pour les sous chantier, j'ai appliquer les listes déroulantes juste dans une lignes pour essayer les nouvelles formules avec les listes déroulantes. je les ai mis en rouge pour que vous pouvez les voir plus rapidement dans l'onglet RTP-2017

J'ai remarqué plusieurs problèmes,

1er: Pour la ligne code chantier on retrouve tout les codes de chantier en provenance de l'index chantier (ligne 8), parfait néanmoins ma formule au dessus pour le nom de chantier juste au dessus ne retrouve pas le code chantier correspondant, c'est étrange car le code existe,

2eme problème: on ne peux pas écrire le code a la main sur le clavier, une erreur apparaît, il faut le sélectionner sur la liste déroulante, cela ne devrai pas ce produire. je ne comprend pas cette erreur.

3eme problème: il n'existe pas de lien pour la liste déroulante de la ligne sous chantier (ligne 9) avec les deux autres listes, c'est a dire celle de l'index chantier et celle des métiers, donc on retrouve les noms des sous chantiers qui n'appartiennent pas a la correspondance sélectionné par la case de sélection (code chantier) et (métier), qui est justement le grand problème que je n'arrivais pas a résoudre, comme exemple dans la case F9 on devrai retrouver uniquement le sous chantier "Abords laminoir" car il n'y a qu'une correspondance, néanmoins on retrouve la liste complète des sous chantiers.

Pour la liste Métier je ne l'ai pas mis en place car mon ancienne liste fonctionnais déjà et j'ai eu peur que la nouvelle fonctions faisait apparaître tout les métiers alors que ils devrais être également trié par rapport au code chantier associé.

Je n'ai appliquer que les nouvelle listes déroulante que sur la ligne 8 et 9 de la colonne D à la colonne H pour l'instant, après il me faudra recopier toute c'est listes pour les jours suivant et aussi pour les autres emplacement plus bas. mais je le ferai ne vous embêté pas avec cela vous faite déjà beaucoup pour moi en m'aidant.

Je vous remercie infiniment.

Bien cordialement
 

Pièces jointes

  • muarthan3_modifié.xlsx
    958.8 KB · Affichages: 24

Dugenou

XLDnaute Barbatruc
Bonsoir,
question 1 : code chantier : la lissteindex utilise des données texte renvoyée par la formule (colonne G des données) qui se termine par &"" (ça permet de masquer les 0, mais du coup les valeurs sont en texte. J'ai enlevé le &"" et j'ai changé la formule pour la liste déroulante
Code:
=DECALER(Donnes!$G$3;;;NB.SI(Donnes!$G$3:$G$155;">"&0))
au lieu de "><"&"".

Question 2 : même raison vous entrez un chiffre alors que la liste de validation veut un texte d'ou refus. C'est corrigé par la même occasion car maintenant la liste de validation est un chiffre

Question3 : là ça se complique : vous avez besoin d'une liste déroulante différente dans chaque colonne.
ça implique de calculer d'avance toutes les listes de souschantier pour tous les chantiers. Je l'ai fait dans la feuille données, après avoir repris la liste des chantiers pour enlever les codes 0 (formule de la colonne G un peu modifiée) le probleme va être une limite sur le nb de sous chantiers possibles : là j'ai mis 6 valeurs et j'ai remis le code chantier en premier (plus pratique pour vérifier mais on pourra l'enlever).
J'ai ensuite modifié la formule de la liste déroulante de la ligne9 : ça me semble bon maintenant.
Je vous préviens j'arriverai pas à faire des sous sous listes de metier pour chaque sous chantier

merci de regarder déjà si ça convient
 

Pièces jointes

  • muarthan4.xlsx
    1 MB · Affichages: 31
Dernière édition:

Muarthan

XLDnaute Nouveau
Bonjour,

Merci encore pour votre aide,
Oui j'ai compris la différence de ce que vous avez fait, si vous regarder bien dans le fichier il existe des colonne caché après la I, ce sont des colonnes ou j'ai déjà essayé de calculer les différents sous chantier par rapport au code chantier.
il existe aussi un numéro de sous chantier qui aide car
pour un chantier il peu y avoir plusieurs sous chantier, et le sous chantier a attribuer un numéro qui va de 0 à 6, 7 ou 8 voir plus mais cela n'est jamais arrivé, j'ai réussi a trier les sous chantier et après j'ai essayé de les trier a nouveau par rapport au métier, j'y suis presque arrivé mais je n'arrivai pas a trouver un code de formule qui me permette de le mettre dans une liste déroulante qui change automatiquement par rapport au deux autres case, Code chantier et métier.
J'ai essayé de reprendre ce que vous avez fait un peu plus bas dans la partie VRD mais apparemment les sous chantier qui devrai apparaître ne sont pas les bons, il continu a faire référence au métier de terrassement.
Je comprend bien que ce n'est pas évident, c'est pour cela que j'ai eu besoin d'aide.

Juste une autre petite question qui n'a rien a voir avec le reste. J'ai remarqué que quand les conducteur de travaux utilise la feuille, ils copie souvent les cases pour les utiliser les jours suivant, j'ai créé une mise en forme conditionnelle pour le nom des équipes qui met en rouge la personne quand celle ci est sur plus d'un chantier le même jour, jusqu'à la tout va bien, le problème c'est que quand il copie les personnes pour les mettre sur un autre jour on dirai que l'Excel copie cette condition et ça commence a buger, ce bug est d'Excel ou il existe une façon de contourner ce bug?

Merci Bien cordialement
 

Dugenou

XLDnaute Barbatruc
Bonjour,
Je n'avais pas pris garde aux colonnes cachées. En le découvrant je me dis que la mise en place d'un TCD sur les données sera plus pratique à utiliser que les formules matricielles et permettra de gérer plusieurs sous niveau. J'ai mis les colonnes N° chantier puis métier puis sous chantier, on peut changer cet ordre.
J'ai refait les listes de validation pour la première semaine et aussi sur la partie VRD. Si ça vous convient mieux on pourra fignoler.
J'en ai profité pour changer l'affichage du jour : pas besoin de formule : il suffit d'afficher la date sous un format jjjj.
Voir PJ si c'est plus pratique (j'ai dédoublé la feuille données pour supprimer toutes les colonnes ajoutées : c'est plus propre, mais j'ai laissé l'ancienne pour ne pas tout casser)
Pour la mise en forme conditionnelle : quand le conducteur copie sur une autre colonne, la MFC se copie aussi. Il faut coller les valeurs seulement.

Cordialement
 

Pièces jointes

  • muarthan5.xlsx
    1.1 MB · Affichages: 34

Muarthan

XLDnaute Nouveau
Oui je pense que c'est tout à fait ça, c'est pourquoi j'avais déjà étudier une solution avec un triage sur plusieurs colonnes vue que les sous chantier sont toujours lié au code de chantier ou index chantier et au différent métiers, la difficulté repose sur le faite d'avoir énormément de case de sélection pour chaque jour de l'année et plusieurs groupe associer.
Il n'y a pas de problème l'onglet des donnés viens d'un fichier lié en provenance de la base de donné sur Access.
De toute façon une fois la feuille de calcul opérationnel je ferai le ménage partout.
Pour l'instant il faut régler le problème de sélection des liste de sous chantier c'est le plus important mais je pense que nous sommes sur la bonne voie.
Ma première pensé pour résoudre ce problème était de créé plusieurs colonne de trie pour retrouver les sous chantier par rapport au code chantier pour chaque métier différent, d'où la création des colonnes avec le nom des métier, ce que je n'arrivais pas a faire c'était d'associer la liste déroulante des sous métier avec le code chantier, c'est pour ça que j'avais utilisé la fonction plusieurs fois (index+equiv...)

par rapport au forme conditionnelle, il n'existe pas une façon de bloqué les formules de façon a ce que quand on copie les cellules on ne copie que les valeurs? les utilisateurs ne sont pas très agile et je ne veux pas crée de conflit avec toute l'équipe, car leur utilisation d'Excel reste extrêmement basique.
 

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 187
Membres
102 809
dernier inscrit
Sandrine83