Afficher une cellule differente suite MIN ou MAX

pour exemple de recherche

Bonjour,

débutant Excel, mes quelques heures de recherche sur le forum ne m'ont hélas pas éclairées.

Donc voici ma question:

dans un tableau du type de celui ci-dessus, comment afficher, en C1 par exemple, "nom X", suite

à une recherche de valeur maximum, ou minimum, dans une plage de cellule précédemment nommée "critereA"

regroupant tous les critère A de tous les modèles .

Soit "nom 36" dans l'exemple ci-dessus pour une recherche de maximum dans "critereA".

Merci de votre aide.

Bonjour,

peux-tu mettre ceci dans un fichier afin de tester la solution ?

Bonjour,

Il ne s'agit pas d'un tableau mais de 3 tableaux !

Un tableau c'est une seule ligne de titres et les données en dessous.

Un des fondamentaux, c'est réfléchir à l'architecture du tableau pour qu'il soit facile à exploiter

Bonjour Steelson

tu veux un autre format de fichier ?

Non, ton fichier excel. Mais comme dit Patrice, la structure du tableau facilite plus ou moins les choses. Le plus simple tant sans calcul avec un TCD et une structure ad-hoc.

Bonjour Patrice33740,

c'est vrai qu'il a d'abord été fait pour être lisible, et juste pour moi.

Avec le temps il a un peu grandi. La lecture y est un peu fastidieuse.

Cependant la fonction =MAX(critereA) fonctionne très bien mais ne

correspond pas tout à fait à ce que je souhaite.

voici un l'exemple en fichier Excel.

Il y a juste une formule MAX en E1.

Salut L'Embrouille,
Salut l'équipe,

quelque chose comme ça ?
Tu cliques en [A1] pour choisir "MIN" ou "MAX" et en [B1] - liste de validation - pour le critère.
[G1] sert pour la formule MAX-MIN.

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Not Intersect(Target, [B1]) Is Nothing And [B1] <> "" Then _
    [G1].Formula = "=" & [A1] & "(critere" & [B1] & ")": _
    Set rCel = Range("critere" & [B1]).Find(what:=[G1], lookat:=xlWhole, LookIn:=xlValues): _
    [D1] = rCel.Offset(-(Asc([B1]) - 64), 0).Value: _
    [D1:F1].Interior.Color = rCel.Interior.Color: _
    rCel.Offset(-(Asc([B1]) - 64), 0).Select
'
End Sub
5embrouille.xlsm (19.76 Ko)

A+

bonsoir

un essai sans vba ..................

cordialement

14j-membrouille.xlsx (11.13 Ko)

Bonsoir.

Waaaho !!!

Cela fonctionne très bien. Merci à vous deux curulis57 et tulipe_4.

Il ne reste plus qu'a essayer d'appliquer ça au tableau original .

Pour la solution "avec VBA" (?) je n'ai aucune idée de la façon dont cela s'utilise, au

contraire de la formule, mais l'exemple fourni fonctionne très bien.

Merci à tous.

Bonne nuit.

@Tulipe, c'est du grand'Art ... faudrait te mettre à Google Sheets qui permet de très belle formule puissantes et simples.

@j'membrouille : une version sans calcul avec une autre structuration des données

11j-membrouille.xlsx (21.51 Ko)

merci

je ne connais pas tout ces Machin , je fais dans " l'optimisation " du package de base en cherchant à en dépasser les limites apparentes , évidement ;parfois cela prend des tournures cabalistiques; pas toujours performantes , mais pour des petits fichiers , cela peut "dépanner"

cordialement

Bonjour à tous,

@Steelson: pourquoi pas refaire le tableau ... c'est vrai que cela me permettrais de rester dans des formules simples.

A noter que dans l'exemple que tu proposes, la saisie de nouvelles données n'est pas prise en compte dans le résultat.

Bonne journée.

A noter que dans l'exemple que tu proposes, la saisie de nouvelles données n'est pas prise en compte dans le résultat.

si si si si, oh que si ... puisque les données sont en tableau structuré

il suffit ensuite d'actualiser le TCD (un seul suffit) par un clic droit > actualiser

reste que je ne peux pas rivaliser avec Tulipe

Salut L'Embrouille,
Salut l'équipe des as,

pas que je veuille m'immiscer, il y en a assez pour tous, mais si L'Embrouille pouvait au moins expliquer comment son tableau original est censé évoluer, chacun pourrait y aller de son petit jeu pour le plaisir du travail bien fait


A+

Bonsoir à tous.

Merci pour vos contributions.

@Steelson, désolé je ne connais pas la procédure "actualiser", pas encore, ni TCD d'ailleurs .

Le clic droit peut se faire n'importe où ?

@curulis57:

- le tableau comporte 10 "modèles". Ce paramètre n'a pas évolué en trois ans.

- chaque "modèle" a deux "critères", mais cela est susceptible de changer.

- le nombre de "nom X" évolue, en positif, de temps en temps de façon aléatoire dans les "modèles".

- les "valeurs" sont importées depuis les feuilles de chaque "nom X" (56 à ce jour) par le simple =[cellule] .

Voilà.

A+.

@Steelson, désolé je ne connais pas la procédure "actualiser", pas encore, ni TCD d'ailleurs .

Le clic droit peut se faire n'importe où ?

Le clic droit se fait quand tu es sur une case de n'importe quel TCD

Le TCD est un outil extrêmement puissant, cherche sur le net quelques vidéos simples pour t'entraîner, c'est un investissement que tu ne regretteras pas !

Salut L'Embrouille,
Salut Steelson,

n'ayant pas un de ces 56 fichiers (j'ai bien une idée de processus, mais bon...), cette version ne fonctionnera pas automatiquement au changement de valeur, indétectable puisque généré par une formule.
Un choix en [A1:B1] est toujours nécessaire mais il est inutile de nommer tes Range ("Critères") : la macro se charge de se faire sa petite collection à la demande.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim rCells As Range, rCel As Range, dbNB#
'
If Not Intersect(Target, [B1]) Is Nothing And [B1] <> "" Then
    For x = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If InStr(Range("A" & x).Value, "critère " & [B1]) > 0 Then
            If rCells Is Nothing Then
                Set rCells = Range("B" & x).Resize(1, Cells(x, Columns.Count).End(xlToLeft).Column)
            Else
                Set rCells = Union(rCells, Range("B" & x).Resize(1, Cells(x, Columns.Count).End(xlToLeft).Column))
            End If
        End If
    Next
    dbNB = IIf([A1] = "MAX", WorksheetFunction.Max(rCells), WorksheetFunction.Min(rCells))
    Set rCel = rCells.Find(what:=dbNB, lookat:=xlWhole, LookIn:=xlValues)
    [D1] = rCel.Offset(-(Asc([B1]) - 64), 0).Value
    [D1:F1].Interior.Color = rCel.Interior.Color
    rCel.Offset(-(Asc([B1]) - 64), 0).Select
End If
'
End Sub
6embrouille.xlsm (25.67 Ko)


A+

déjà debout ?

Pas encore couché et pour cause, j'ai un horaire intégral de nuit ! Une paix royale !
Lève-très-tôt, dis donc ! Un peu tôt pour le lever du soleil, non ?

Rechercher des sujets similaires à "afficher differente suite min max"