Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Minimax et Maximin

6 réponses
Avatar
garnote
Bonjour,

J'ai trois colonnes de 10 nombres dans la plage A1:C10.
Pour obtenir le minimum du maximum de chaque colonne,
j'utilise cette formule :
=MIN(MAX(A1:A10);MAX(B1:B10);MAX(C1:C10))
Pour obtenir le maximum du minimum de chaque colonne,
j'utilise cette formule :
=MAX(MIN(A1:A10);MIN(B1:B10);MIN(C1:C10))
Dans les deux cas, j'obtiens le bon résultat.
Mais si j'avais 100 colonnes, cette façon de faire deviendrait
ridicule. Comment faire autrement ?

Serge

6 réponses

Avatar
Banjo
Bonjour Serge,

Pourquoi ne mets-tu pas en entête de chaque colonne les calculs de min et de
max de la colonne. Par la suite, il devient aisé de récupérer les min de max
et max de min quel que soit le nombre de colonnes.

Cordialement,

Banjo


"garnote" a écrit dans le message de news:

Bonjour,

J'ai trois colonnes de 10 nombres dans la plage A1:C10.
Pour obtenir le minimum du maximum de chaque colonne,
j'utilise cette formule :
=MIN(MAX(A1:A10);MAX(B1:B10);MAX(C1:C10))
Pour obtenir le maximum du minimum de chaque colonne,
j'utilise cette formule :
=MAX(MIN(A1:A10);MIN(B1:B10);MIN(C1:C10))
Dans les deux cas, j'obtiens le bon résultat.
Mais si j'avais 100 colonnes, cette façon de faire deviendrait
ridicule. Comment faire autrement ?

Serge





Avatar
Francois L
Bonjour,

J'ai trois colonnes de 10 nombres dans la plage A1:C10.
Pour obtenir le minimum du maximum de chaque colonne,
j'utilise cette formule :
=MIN(MAX(A1:A10);MAX(B1:B10);MAX(C1:C10))
Pour obtenir le maximum du minimum de chaque colonne,
j'utilise cette formule :
=MAX(MIN(A1:A10);MIN(B1:B10);MIN(C1:C10))
Dans les deux cas, j'obtiens le bon résultat.
Mais si j'avais 100 colonnes, cette façon de faire deviendrait
ridicule. Comment faire autrement ?


Bonjour,

Fonctions personnalisées ?
'-------------------------------------------------------------------
Function MaxdesMini(plage As Range)
Maxi = Application.Min(plage)
dercol = plage.Columns.Count
derlign = plage.Rows.Count
premcol = plage.Cells(1, 1).Column
premlign = plage.Cells(1, 1).Row
For i = premcol To dercol
Mini = Application.Min(Range(Cells(premlign, i), Cells(derlign, i)))
If Maxi < Mini Then Maxi = Mini
Next
MaxdesMini = Maxi
End Function
'---------------------------------------------------------------------
Function MindesMaxi(plage As Range)
Mini = Application.Max(plage)
dercol = plage.Columns.Count
derlign = plage.Rows.Count
premcol = plage.Cells(1, 1).Column
premlign = plage.Cells(1, 1).Row
For i = premcol To dercol
Maxi = Application.Max(Range(Cells(premlign, i), Cells(derlign, i)))
If Mini > Maxi Then Mini = Maxi
Next
MindesMaxi = Mini
End Function
'----------------------------------------------------------------------

--
François L

Avatar
garnote
Merci Banjo et François,

Vos deux suggestions me conviennent mais en réalité,
je voulais savoir s'il n'y avait pas une p'tite matricielle
magique qui ferait cela directement :-)
Et pour vous montrer que je ne suis pas trop paresseux,
j'ai personnalisé les fonctions personnalisées de François.
Une petite question :
Pourriez-vous éclairer ma lanterne au sujet de l'utilisation de
WorksheetFunction., Application. et Application.WorksheetFunction.

Function MiniMax(plage As Range) As Double
Dim maxi()
Dim NC As Integer, k As Integer
NC = plage.Columns.Count
ReDim maxi(1 To NC)
For k = 1 To NC
maxi(k) = Application.Max(plage.Columns(k))
Next k
MiniMax = Application.Min(maxi)
End Function

Function MaxiMin(plage As Range) As Double
Dim mini()
Dim NC As Integer, k As Integer
NC = plage.Columns.Count
ReDim mini(1 To NC)
For k = 1 To NC
mini(k) = Application.Min(plage.Columns(k))
Next k
MaxiMin = Application.Max(mini)
End Function

Serge


"Francois L" a écrit dans le message de news:
Bonjour,

J'ai trois colonnes de 10 nombres dans la plage A1:C10.
Pour obtenir le minimum du maximum de chaque colonne,
j'utilise cette formule :
=MIN(MAX(A1:A10);MAX(B1:B10);MAX(C1:C10))
Pour obtenir le maximum du minimum de chaque colonne,
j'utilise cette formule :
=MAX(MIN(A1:A10);MIN(B1:B10);MIN(C1:C10))
Dans les deux cas, j'obtiens le bon résultat.
Mais si j'avais 100 colonnes, cette façon de faire deviendrait
ridicule. Comment faire autrement ?


Bonjour,

Fonctions personnalisées ?
'-------------------------------------------------------------------
Function MaxdesMini(plage As Range)
Maxi = Application.Min(plage)
dercol = plage.Columns.Count
derlign = plage.Rows.Count
premcol = plage.Cells(1, 1).Column
premlign = plage.Cells(1, 1).Row
For i = premcol To dercol
Mini = Application.Min(Range(Cells(premlign, i), Cells(derlign, i)))
If Maxi < Mini Then Maxi = Mini
Next
MaxdesMini = Maxi
End Function
'---------------------------------------------------------------------
Function MindesMaxi(plage As Range)
Mini = Application.Max(plage)
dercol = plage.Columns.Count
derlign = plage.Rows.Count
premcol = plage.Cells(1, 1).Column
premlign = plage.Cells(1, 1).Row
For i = premcol To dercol
Maxi = Application.Max(Range(Cells(premlign, i), Cells(derlign, i)))
If Mini > Maxi Then Mini = Maxi
Next
MindesMaxi = Mini
End Function
'----------------------------------------------------------------------

--
François L



Avatar
Francois L
Merci Banjo et François,



Bonjour,

Vrai que c'est plus propre comme tu l'as refait !

Sur la différence entre Application. et Application.WorksheetFunction.
ça c'est une question pour gourou ! La seule chose que je sais c'est que
Clément Marcotte disait toujours que Application.WorksheetFunction. avec
Vlookup générait des bugs et qu'il valait mieux utiliser Application.

--
François L


Vos deux suggestions me conviennent mais en réalité,
je voulais savoir s'il n'y avait pas une p'tite matricielle
magique qui ferait cela directement :-)
Et pour vous montrer que je ne suis pas trop paresseux,
j'ai personnalisé les fonctions personnalisées de François.
Une petite question :
Pourriez-vous éclairer ma lanterne au sujet de l'utilisation de
WorksheetFunction., Application. et Application.WorksheetFunction.

Function MiniMax(plage As Range) As Double
Dim maxi()
Dim NC As Integer, k As Integer
NC = plage.Columns.Count
ReDim maxi(1 To NC)
For k = 1 To NC
maxi(k) = Application.Max(plage.Columns(k))
Next k
MiniMax = Application.Min(maxi)
End Function

Function MaxiMin(plage As Range) As Double
Dim mini()
Dim NC As Integer, k As Integer
NC = plage.Columns.Count
ReDim mini(1 To NC)
For k = 1 To NC
mini(k) = Application.Min(plage.Columns(k))
Next k
MaxiMin = Application.Max(mini)
End Function

Serge


"Francois L" a écrit dans le message de news:
Bonjour,

J'ai trois colonnes de 10 nombres dans la plage A1:C10.
Pour obtenir le minimum du maximum de chaque colonne,
j'utilise cette formule :
=MIN(MAX(A1:A10);MAX(B1:B10);MAX(C1:C10))
Pour obtenir le maximum du minimum de chaque colonne,
j'utilise cette formule :
=MAX(MIN(A1:A10);MIN(B1:B10);MIN(C1:C10))
Dans les deux cas, j'obtiens le bon résultat.
Mais si j'avais 100 colonnes, cette façon de faire deviendrait
ridicule. Comment faire autrement ?
Bonjour,


Fonctions personnalisées ?
'-------------------------------------------------------------------
Function MaxdesMini(plage As Range)
Maxi = Application.Min(plage)
dercol = plage.Columns.Count
derlign = plage.Rows.Count
premcol = plage.Cells(1, 1).Column
premlign = plage.Cells(1, 1).Row
For i = premcol To dercol
Mini = Application.Min(Range(Cells(premlign, i), Cells(derlign, i)))
If Maxi < Mini Then Maxi = Mini
Next
MaxdesMini = Maxi
End Function
'---------------------------------------------------------------------
Function MindesMaxi(plage As Range)
Mini = Application.Max(plage)
dercol = plage.Columns.Count
derlign = plage.Rows.Count
premcol = plage.Cells(1, 1).Column
premlign = plage.Cells(1, 1).Row
For i = premcol To dercol
Maxi = Application.Max(Range(Cells(premlign, i), Cells(derlign, i)))
If Mini > Maxi Then Mini = Maxi
Next
MindesMaxi = Mini
End Function
'----------------------------------------------------------------------

--
François L







Avatar
garnote
Salut François,

ça c'est une question pour gourou ! La seule chose que je sais c'est que Clément Marcotte disait toujours que
Application.WorksheetFunction. avec Vlookup générait des bugs et qu'il valait mieux utiliser Application.


Attendons donc les gourous, fussent-ils roux, ou une intervention du Dalaï d'Alma
( vraiment n'importe quoi ) !
Mais plus sérieusement, qu'est devenu notre Clément papal ?
M'ennuie de ses fougueuses interventions ;-)

Serge

Avatar
Francois L

Attendons donc les gourous, fussent-ils roux, ou une intervention du Dalaï d'Alma
( vraiment n'importe quoi ) !
Mais plus sérieusement, qu'est devenu notre Clément papal ?
M'ennuie de ses fougueuses interventions ;-)




Re,

Aux dernières nouvelles, il disait ne plus avoir internet et des
problèmes de sous pour le rétablir.

--
François L