Récupérer une valeur prioritaire liée à une colonne

Bonjour à tous,

Dans le cadre de mon nouvel emploi, je vais utiliser de façon croissante Excel. Ce qui n'était pas le cas dans mon précédent Job.

Je me suis donc inscris sur ce forum pour développer mes compétences.

Voici mon 1er problème:

Je dispose d'une Base de Données, recensant des codes Cartons contenant des codes Dossiers contenant des codes Echantillons.

J'ai une colonne Statut dépendant de l'échantillon. Ce Statut comprend 3 valeurs différentes possibles.

Je souhaiterais remonter l'une de ces valeurs au niveau du code Cartons, en triant par priorité.

L'ordre des priorités via le statut étant: En attente de résultats -> Présence -> Pas d'amiante détectée

Si au moins un des Echantillon a le statut 'En attente de résultats', alors le Carton a le statut 'En attente de résultat'

Sinon au moins un des Echantillons a le Statut 'présence' , alors le Carton a le Statut présence.

Sinon le Carton récupère le statut ' Pas d'amiante détectée '

Voici un exemple: Si (n° échantillon du Carton 034117730000041283 = Statut Amianté) >0 , alors le Carton 034117730000041283 = statut amianté.

Objectif voulu:

Le résultat souhaité est un Tableau, contenant les codes Carton et les statuts associés (défini via les priorité définis ci-dessus)

J'ai mis la trame voulu dans l'onglet 'Objectif'

Comment vous y prendrez vous ?

Je vous joins le fichier au post.

Ceci étant mon 1er post, n'hésitez pas me dire, si j'ai mal expliqué mon problème ect . . .

Je le ferais mieux (moins mal ) la prochaine fois.

Merci d'avance à tous.

Bonjour,

C'est bien expliqué, ne t'en fait pas

J'avais un sujet similaire pour un planning que j'avais fait cette année (gros fichier d'ailleurs), et je voulais prioriser également certains états d'avancement (si en retard, faire ressortir le retard avant tout le reste etc...).

Ce que je te propose c'est d'utiliser la même astuce, tes statuts, je les ai rattaché à des codes de statut, 0 pour en attente de résultat, 1 pour amiante détectée, 2 pour pas d'amiante (0 étant le plus prioritaire et 2 le moins prioritaire).

L'avantage d'utiliser des nombres c'est de pouvoir faire des fonctions MIN et MAX dessus, soit ça te retourne la plus grosse valeur, soit la plus petite, après tu n'as plus qu'a donner des nombres différents en fonction de tes prioritées.

Si tu n'as ne serait-ce qu'un seul de tes cartons de ton code archive qui a un 0, le 0 ressortira, si pas de 0 mais au moins un 1, le 1 ressortira, et ainsi de suite...

Je me suis également permis de modifier un peu ton fichier :

  • Mise sous forme de tableau de l'ensemble des tableaux présents sur la feuille, c'est beaucoup plus pratique à utiliser.
  • Ajout d'une feuille statuts dans laquelle tu peux modifier les différents codes statuts, en ajouter etc...
  • Fixation de la première ligne de chaque feuille, pour continuer à pouvori consulter les en-têtes
  • Ajout d'une liste dans la colonne statut de la feuille "Prod", pour saisir plus facilement les données

J'ai construits la feuille afin qu'elle soit utilisée de la sorte :

Tu rentres le statut dans la feuille prod et un code statut lui est directement attribué.

J'ai préféré que tu rentres le statut plutôt que le code pour la raison suivante : si tu veux modifier l'ordre des priorités par exemple, le code statut 0 será peut-être amiante détectée, le soucis, c'est que du coup tout les codes 0 que tu avais mis deviendront "amiante détectée" en statut.

On procède donc autrement : tu modifies l'ordre, et le code statut est ensuite modifié en conséquence dans la feuille "prod", pas de corruption de données comme ça

Je te laisse voir le résultat ici:

Merci de ta réponse

Si j'ai bien compris, tu te sers de la formule ci-dessous pour comparer la valeur 'statut (amiante) ' de la ligne et tu la compares au tableau de l'onglet Statut qui sert de référence.(Que je pourrais modifier par la suite)

=RECHERCHEV([@[Statut (amiante)]];Statuts[[Statut]:[C ode statut2]];2;FAUX)

Question Bonus: la syntaxe [@[Statut (amiante)]] -> correspond à une vérification dans une colonne?

Ce qui permet d'avoir des nombres à la place de statut -> OK

Par la suite, pour obtenir le statut final souhaité -> Càd un bête tableau Code Archivage / Statut

(C'est celui que je compte afficher en production , donc il doit être le plus simple possible) -> Carton : Attente de résultat / Amiante détectée / Pas d'amiante détectée

J'utilise une fonction MAX.SI.ENS ou MAX.SI.ENS et je supprime les doublons au niveau du code carton ?

Bonjour,

non ce n'est pas exactement comme ça que fonctionne la fonction RECHERCHEV, je vais t'expliquer un peu la formule et la syntaxe

=RECHERCHEV([@[Statut (amiante)]];Statuts[[Statut]:[C ode statut2]];2;FAUX)

donc on cherche [@[Statut (amiante)]] càd le statut qui est renseigné dans le tableau statuts de la feuille... statuts! (ça en fait beaucoup des statuts )

Ensuite si la fonction trouve le statut dans le tableau, elle renvoie sur la ligne où elle la trouve, un numéro de colonne (1 = première colonne du tableau où on cherche, 2 = 2ème colonne etc...)

Faux permet juste de dire qu'on cherche la valeur exacte et non une valeur approchée.


Alors la syntaxe... ([@[Statut (amiante)]] signifie entre autre qu'on veut dans le tableau en cours (@) la valeur de la cellule sur la colonne Statut (amiante) sur la ligne où on calcule, je ne l'ai pas écrit à la main, Excel l'a fait comme un grand.

Cette syntaxe vient du fait que j'ai déclaré des tableaux, ce qui veut dire que j'ai déclaré des zones, tu peux les retrouver dans l'onglet formules et gestionnaire de Noms, l'avantage avec ces tableaux, c'est que leur taille se met à jour toutes seules, et les formules de colonnes se réécrivent automatiquement.


Dernière question que tu as posé:

Pour ton tableau de synthèse, tu peux en effet copier tous tes codes d'archivage et supprimer les doublons. après, tu peux en effet utiliser la fonction MIN.SI que j'ai bricolé (pas besoin du ENS d'ailleurs, il n'y a qu'un seul critère, le code d'archivage qui doit être le même).

Après un MAX.SI fonctionne aussi, la seule différence c'est que ta priorité será comme suit:

2 -> 1 -> 0 pour tes codes de statut, au fait, si nécessaire, tu peux masquer les colonnes code de statut, elles ne servent qu'à la fonction de recherche pour la synthèse et se remplissent automatiquement.

Si des choses t'échappent encore n'hésite pas à demander

Bonjour,

Merci. C'est clair.

Concernant la syntaxe: ([@[Statut (amiante)]]

-> le @ signifie tableau en cours. (Celui dans lequel la formule est écrite ? Sinon comment sélectionnes tu le bon tableau ?).

Càd qu'il faut au préalable avoir mis ces informations en format tableau. Accueil -> Mettre sous forme de tableau. Correct ?


Concernant la formule MIN.SI

=MIN(SI(Données[Co de archivage]=[@[Co de archivage]];Données[Co de statut];""))

Pour décomposer la formule

Je prends la valeur min de

( Si la valeurs du tableau Données, colonne code Archivage = valeurs du Tableau en cours ( celui de Synthèse ??) , colonne Code Archivage )

alors je prends la valeur du tableau Données de la colonne Code Statut )

Quelle est la partie de la formule permettant d'exprimer la plage de valeurs sur laquelle on réalise la fonction Min? Dans ce cas pour un seul code archivage.

C'est à cause du fait que la fonction soit matricielle ?

Rebonjour!

Pour répondre à la première question (je vais continuer avec les bonnes habitudes):

Spoiler

Pour que la formule mette une syntaxe propre aux tableaux, il faut en effet definir la zone avant, pour ça tu vas bel et bien dans le menú Accueuil puis Mettre sous forme de tableau.

Alors petite correction par rapport à ce que je t'ai dis ce matin comme j'ai fait le teste, il semble donc que la syntaxe soit celle-ci :

Synthèse[@[ Code archivage ]]

Ça s'écrit comme ça :

Nomdutableau[@ pour préciser qu'on a un champ de tableau j'imagine [nomduchamp] ]

Si le nom du tableau n'est pas précisé, c'est que c'est dans le même tableau que celui dans lequel tu écris.

Toute cette syntaxe se met automatiquement quand tu cliques sur une cellule, savoir l'écrire n'est donc pas nécessaire, même si c'est toujours mieux de comprendre ce genre de chose


Deuxième question :

Spoiler

Oui il s'agit bien d'une formule matricielle, je vais t'expliquer pourquoi.

SI(Données[Co de archivage]=[@[Co de archivage]];Données[Co de statut];"")

En fait c'est cette partie qui est compliquée, la fonction MIN prend une plage de valeur pour retourner la plus petite d'entre elles. Sauf que la fonction MIN renvoie une seule valeur, pas une plage de valeur, c'est pour ça qu'il faut utiliser une formule matricielle, pour que le SI renvoie une plage de valeurs qui sont le résultats d'une plage de tests.

Quand au SI en lui même:

SI(Données[Co de archivage]=[@[Co de archivage]];Données[Co de statut];""))

Je t'ai mis en couleur les tableaux pour les différencier.

On a le champ Co de archivage du tableau Données qu'on compare au champ Co de archivage du tableau en cours (on se rappelle qu'on tape la formule dans le tableau de Synthèse), et si les codes d'archivages sont les mêmes, le SI renvoie le champ Co de statut du tableau Données

En fait, avec les noms, on lit encore mieux la formule!

La particularité de la fonction SI qui est géniale (RIP les fonctions qui ne Font pas ça, qui sont nombreuses...), c'est qu'elle ignore totalement le texte, du coup si le SI renvoie "" elle snob totalement la valeur. certaines renvoient malheureusement des erreurs et ça bloque tout, après ça demande de faire du bricolage...

Rebonsoir!

C'est super clair concernant la syntaxe.

Effectivement je préfère décortiquer les formules que tu as mises et clairement les comprendre, même si Excel fait pas mal de chose seul via les cliques.


La plage de la fonction Min est donc liée à la plage de la fonction SI réalisé grâce à une fonction matricielle.

Effectivement les codes couleurs pourront servir d'aide à la lecture pour des imbrications de fonctions plus compliquées. (Encore une bonne habitude à prendre lorsque l'on est coincé)

Merci d'avoir répondu à tout mes questions (en plus d'avoir répondu à mon problème ). J'ai commencé à apprendre à pécher et pas uniquement à recevoir le poisson directement dans l'assiette

Et surtout merci d'avoir pris de ton temps pour cela.

Comme tu le remarques, je débute plutôt. As tu des bon lien pour des tutos Excel , avec notamment les fameuses bonnes habitudes ( Par MP peut être ? ).

Bonne soirée à toi.

Je ne doute pas de reposter d'ici peu...

@+

Bonjour,

je t'aurais bien donné des liens de ce genre si j'en avais utilisé par le passé, malheureusement j'ai tout appris par moi-même

En revanche si tu bloques sur l'utilisation de certaines choses, tu peux toujours taper quelques mots sur un moteur de recherche et voir les sujets similaires, c'est comme ça que j'avais appris comment créer une fonction matricielle avec le raccourcis Ctrl + Shift + Entrée

Ça marche bien aussi comme méthode, tu apprends au fur et à mesure que tu utillises

Sinon je crois que le site Excel-pratique propose déjà quelques cours à suivre

Rechercher des sujets similaires à "recuperer valeur prioritaire liee colonne"