Minimax et Maximin

Le
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Banjo
Le #4808821
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"
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





Francois L
Le #4808711
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

garnote
Le #4654781
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"
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



Francois L
Le #4654681
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"
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







garnote
Le #4654601
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

Francois L
Le #4654481

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

Publicité
Poster une réponse
Anonyme