Formule max [Résolu]

Signaler
Messages postés
13
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2011
-
Messages postés
13
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2011
-
Bonjour,

Je suis sur Excel 2003.
Je souhaite trouver la valeur max d'une colonne tout en excluant des valeurs dans la plage de données.

Par exemple mes valeurs sont classés dans la colonne A mais je souhaite que seul les veleurs avec un 1 dans la colonne B soient prise en compte.

A B

1 45 1
2 67 1
3 99 0
4 98 0
5 3 1

La valeur max dans ce cas là est 67.

Merci d'avance.
A voir également:

6 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
...

Public Function MyMax(Values As Range, Where As Range) As Variant
Dim i As Long
Dim nRow As Long
    '# nRow est la ligne de la première donnée.
    nRow = Values.Row
    '# Pour chacune des lignes de la Range...
    For i = 1 To Values.Rows.Count
        '# Si la cellule de la colonne 'B' correspondante ne contient pas 0 
        If Where.Cells(nRow) Then
            '# alors on calcule le max
            If MyMax < Values.Cells(nRow) Then
                MyMax = Values.Cells(nRow)
            End If
        End If
        nRow = nRow + 1
    Next
End Function


pour adapter pour ton cas, tu peux simplement faire :
Public Function MyMax(Values As Range, Where As Range, Byval Value as long) As Variant
Dim i As Long
Dim nRow As Long
    nRow = Values.Row
    For i = 1 To Values.Rows.Count
        If Where.Cells(nRow) = Value Then
            If MyMax < Values.Cells(nRow) Then
                MyMax = Values.Cells(nRow)
            End If
        End If
        nRow = nRow + 1
    Next
End Function


et ainsi faire :

=MyMAX(A1:A10; B1:B10; 1)
=MyMAX(A1:A10; B1:B10; 2)

...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
Solution de facilité :

=MAX(A1*B1;A2*B2;A3*B3;A4*B4;A5*B5)

Après, tu peux te faire un colonne C contenant:
=A1*B1
=A2*B2
...
=A5*B5
et simplement faire un
=MAX(C1:C5)

Autre solution, faire une Macro :

=MyMAX(A1:A5; B1:B5)
Public Function MyMax(Values As Range, Where As Range) As Variant
Dim i As Long
Dim nRow As Long
    nRow = Values.Row
    For i = 1 To Values.Rows.Count
        If Where.Cells(nRow) Then
            If MyMax < Values.Cells(nRow) Then
                MyMax = Values.Cells(nRow)
            End If
        End If
        nRow = nRow + 1
    Next
End Function



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
13
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2011

Bonjour,

Est-on obligé de designé les colonnes et lignes dans la formule de mymax?
Car je ouhaiterais que Excel me donne la valeur max des données ou il y a un 1 devant puis la valeur max des donnés ou il y a un 2 devant sans avoir a changé ls plage de donnéés manuellement

ex:

A B

1 45 1
2 67 1
3 99 0
4 98 0
5 3 1
6 56 2
7 58 2
8 21 0
9 23 0
10 4 2

max1=67
max2=58

merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
j'ai rendu cette formule générique...
libre a toi de l'adapter...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
13
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2011

re,

Pour être franc j'ai du mal à comprendre votre code, pouvez-vous me faire un exemple? si c'est pas trop demandé...
Messages postés
13
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2011

merci