Saisit à plusieurs choix multiples

Bonjour,

Je suis un peu débutant sur excel.

Je travail dans une société de maintenance, est nous avons plusieurs contrat, avec des délais d'interventions différents pour des causes différentes.

J'ai créer 1 liste à choix multiples, avec le nom de mes contras, et je doit avoir aussi une autre liste avec les causes du dépannages, et les délais correspondant.

Et j'aimerais que lorsque je rentre la date de la demande, automatiquement suivant le contrat et la cause j'ai mon délais maximum qui s'affiche.

Par exemple :

Sur mon contrat 1, j'ai comme délais pour une simple panne (4 jours), un accident (1 jour), ou bien un remplacement (2jours).

Sur mon contrat 2, j'ai comme délais pour une simple panne (5 jours), un accident (2 heures), ou bien un remplacement (3jours).

Généralement les causes du dépannages sont les mêmes pour tout les contrats.

Ma feuille prend la forme suivantes :

Contrat-----------------------Date du signalement-------------------------------Cause--------------------------------------------------------Délais maximum

(Liste choix)------------(Renseignement manuel)-----------(Liste choix suivant le contrat)-----------(Date du signalement + délais de la cause)

Contrat 1-----------------------"Date de l'appel"-----------------------------------Simple panne--------------------------------------------"Date automatique"

Contrat 2-------------------------------------------------------------------------------------Accident

... ----------------------------------------------------------------------------------------------------- ...

En espérant que vous pourrez m'aider.

Merci d'avance

Bonjour,

Je ne comprends pas très bien comment est structuré ton fichier, nous le transmettre pourrait faciliter la compréhension de ton problème, tu as une seule feuille avec toutes tes informations? Ou bien la feuille que tu nous passes en texte est juste une synhtèse d'une base de données? Il me semble que tu puisses faire un tableau croisé dynamique ou une formule matricielle... de type MAX(SI(...))

Bonjour,

Je vous joint le tableau, il n'est pas vraiment structuré, car j'essaye de trouver les bonne formules.

En bleu ce sont les listes déroulantes.

8travail.xlsx (13.18 Ko)

Bonjour,

Je te joins un essai:

Formule utilisée: =MAX(DECALER(J19:J22;(EQUIV(B6;Contrat;0)-1)*8;0))

Merci de me dire si ça te convient.

Merci de m'aider,

Il faudrait que dans la case délais maximum, il y est la date incrémenté des jours de délais. Par exemple Date du signalement 07/01/2019 14:00 et si je sélectionne cause panne, le délais maximum passerait au 08/01/2019 14:00 automatiquement.

Je ne connais pas après la formule MAX(.....) en quoi consiste t'elle ?

Je te retourne de nouveau le fichier avec la correction souhaitée :

La fonction MAX est une fonction qui te retourne le maximum d'une liste de valeurs, ici tes heures, jours.

Si tu lui donnes 1,2,3, elle va te retourner la valeur la plus grande : 3, ici elle sert à retourner le délai le plus long sur une plage qui bouge en fonction du contrat sélectionné (géré par la fonction DECALER). La fonction DECALER, qui te pose soucis, sert à déplacer une plage de cellules en fonction d'une plage donnée au début, ici elle permet de prendre en compte le changement de Contrat pour passer aux lignes en dessous si tu sélectionnes Contrat2 par exemple, je pourrais faire quelque chose d'encore plus précis que la formule présente dedans si nécessaire d'ailleurs (ici je pars du principes que tu as toujours le même décalage entre le démarage de la description de chaque contrat).

Ici elle décallera de 8 en 8 lignes la plage de sélection de la fonction max, en fonction du contrat choisi.

EDIT:

Pour mieux voir ce que fait la fonction DECALER, tu peux utiliser la fonction "évaluation de formule" disponible dans l'onglet Formules d'Excel, tu peux essayer en mettant différentes valeurs de contrat, tu verras que l'adresse de la plage de cellules changera grâce à cette fameuse fonction.

J'ai bien une date qui s'affiche mais du coup, elle ne s'incrémente pas suivant le contrat et suivant la cause.

J'ai fait une capture écran avec des explications, je ne sais pas si c'est plus simple à comprendre comme sa.

2019 01 07 15h45 02

Ah, en effet je n'avais pas bien compris, c'est possible de mettre tes données différement pour traiter ça plus facilement par formule?

EDIT:

En créant une base de données on peut facilement obtenir ceci:

Oui si c'est plus simple de modifié les données ou bien les mettres sur une autres feuilles. J'avais essayer au debut de créer une base sur une feuille mais je me perdais. Mais avec ton tableau effectivement ça ma l'air plus simple.

Par contre je n'arrive pas à changer la cause, pour faire une liste déroulante je modifie comme pour faire une liste normale ? Ou il y a une formule à mettre ?

Pour la liste déroulante tu peux faire comme pour les contrats, c'est à dire mettre les termes et faire ta liste déroulante, le seul soucis c'est qu'au fur et à mesure que tu ajouteras de nouvelles causes, il faudra que tu les ajoutes à ta liste, tu peux copier toutes tes causes dans une feuille temporaire et utiliser l'option de l'onglet "Données" qui s'appelle supprimer les doublons, et ça ne te laissera qu'en un exemplaire les causes, la feuille temporaire sert à garder ta base de données intacte

Il ne te restera plus qu'a copier les causes restantes dans une zone de liste et si besoin de repréciser la zone.

J'espère que tu comprends mes explications parce que je ne suis pas toujours clair

Cad une feuille temporaire ?

Je n'est hélas pas tout compris

Car la liste "Contrat" fopnctionne bien, mais quand je regarde dans la liste "Cause" la liste est en =#REF

En fait je vois bien ce que vous avez fait pour le choix des contrats.

Mais je n'arrive pas a comprendre pour la liste des causes.

Comment associer le nom du contrat au délais de chaque cause propre à chaque contrat ?

Bonjour,

En fait, j'ai dû enlever la source de donnée de ta liste de causes, c'est pour ça que ça envoie #REF!, tu peux obtenir ce genre d'erreur si tu supprimes une cellule à laquelle fait référence une formule, ça remplassera son adresse par ce code d'erreur.

J'ai donc ajouté une liste de causes comme pour la liste de contrats, tu y trouveras les 5 causes renseignées pour le moment, j'ai donc changé la source de données de ta liste.

L'association est faite via la base de données, car elle contient 2 colonnes d'indentification, une colonne qui contient le nom du contrat, et une colonne qui contient le nom de la cause.

Ensuite la formule =D6+MAX(SI((Tableau1[n°Contrat]=B6)*(Tableau1[cause]=Feuil1!E6);Tableau1[temps];""))

fait le reste du travail, elle te renvoie la valeur maximale qui correspond à la fois à ton contrat, et à ta cause (c'est pour ça que tu as un produit représenté par une * entre deux tests logiques, pour les lignes où le contrat et la cause correspondent, la fonction récupère le temps, dans l'autre cas, elle renvoie "", on renvoie ensuite la valeur maximale parmis celles qui nous restent.

C'est donc la fonction qui gère la recherche de tes valeurs, toi tu as juste à renseigner correctement ta base de données

Je te joins le fichier avec la liste des causes:

Comment dire, un GRAND merci , j'ai remplacer toute mes données, j'en ai rajouter, tout fonctionne niquel !

Après pour pousser le truc encore plus loin, est-ce trop compliqué de rajouter les jours ouvrées ? Pour enlever les jours fériés ainsi que les week-end.

Si c'est trop compliqué je pense que je laisserais tout comme sa.

Encore merci

Rebonjour,

Il y a une fonciton exprès pour ça qui s'appelle SERIE.JOUR.OUVRE, elle permet de donner le jour obtenu à partir d'une date de départ et d'un nombre de jours ouvrés de décalage, il est aussi possible de l'utiliser avec des jours fériés si ont utilise SERIE.JOUR.OUVRE.INTL. Mais je ne l'ai pas utilisé.

ça rallonge un peu la formule par contre comme il faut commencer à manier les parties entières et décimales de la valeur retournée par le maximum, soit on stocke cette valeur dans une cellule pour alléger la formule, soit on a la formule longue qui se répète 3-4 fois dans la formule finale, j'ai pris la deuxième option pour le moment qui donne quelque chose qui va peut-être t'effrayer un peu

Voici le fichier:

J'ai essayé de la rentrer sur mon tableau modifié avec toutes mes données, mais il m'affiche #VALEURS! au niveau du délais maximum,

Pourtant j'ai fais un copier coller de la formule et j'ai bien remplacer les cases par celle correspondante.

J'ai joint le tableau, et est ce qu'il est possible aussi que lorsque la case est vide, la date au délais maximum ne s'affiche pas ?

6tableau-1.xlsm (18.17 Ko)

Pour valider la formule pense bien à utiliser shift+ctrl+entrée, si tu ne le fais pas ça ne confirme pas la formule comme étant matricielle

Attention de bien copier les 4 lignes de ma formule par contre, elle me paraît courte la tienne...

Effectivement je n'avais pas vu que la formule était si grande mais ça me va.

Tout fonctionnent parfaitement !

Dernière demande, est ce que dans l'onglet donnée, il y aurais un moyen de faire disparaître la date, si et seulement si aucune données n'est sélectionné. J'ai joint une capture d'écran.

En tout cas chapeau, je n'y serait jamais arrivé sans votre aide

2019 01 08 14h26 52

Bonjour,

Oui c'est possible, il suffit de rajouter une fonction SI qui va checker si une des deux cellules (contrat ou cause) est vide, pour ça j'ai mis un OU dans l'argument "test logique" de la fonction SI, pour "valeur si vrai" j'ai mis "", et pour "valeur si faux" la formule que l'on connaissait déjà.

Voici le fichier avec la formule

Supprimé

De rien pour le coup de main

EDIT: finalement j'ai opté pour un NBVAL qui va regarder si on a bien les 3 valeurs de renseignées (j'ai pensé aussi à la date de signalement).

Rechercher des sujets similaires à "saisit choix multiples"